java 反射获取对象_使用Java反射机制获取对象
本文由廣州瘋狂軟件教育java培訓分享:
構造接口Person,所有Person都會問好,但具體講什么語言就不知道了!
package interf;
public interface Person {
public void sayHello();
}
構造一個Person的實現類American,問好的時候講英語
package interf;
public class American implements Person {
@Override
public void sayHello() {
System.out.println("Hello,I'm American!");
}
}
構造一個Person的實現類Chinese,問好的時候講中文
package interf;
public class Chinese implements Person {
public void sayHello() {
System.out.println("你好,我是中國人!");
}
//重寫sayHello方法
public void sayHello(String language) {
this.language=language;
System.out.println("你好,我用"+language+"問好!");
}
}
package interf;
import org.junit.*;
public class PersonTest {
public void Test() throws ClassNotFoundException, InstantiationException,
IllegalAccessException {
//第一種方式,直接new
Person p = new Chinese();
p.sayHello();
//第二種方式,采用反射機制獲取對象
//Class> c = Class.forName("interf.Chinese");
Class> c = Class.forName("interf.American");
System.out.println("Chinese類全名:"+Chinese.class.getSimpleName());
System.out.println("Chinese類名:"+Chinese.class.getName());
Person p3 = (Person)c.newInstance();
p3.sayHello();
try {
Constructor> constructor = Chinese.class.getConstructor(); //獲取構造方法
Chinese chineseReflect = (Chinese) constructor.newInstance(); //創建對象
Method method = Chinese.class.getMethod("sayHello",String.class); //獲取方法
method.invoke(chineseReflect, "中文"); //調用方法
Field field = Chinese.class.getField("language"); //獲取域
System.out.println("Reflect -> " + field.get(chineseReflect)); //獲取域的值
} catch (Exception e) {
e.printStackTrace();
}
}
}
test結果如下:
你好,我是中國人,我用中文
Chinese類全名:Chinese
Chinese類名:interf.Chinese
Hello,I'm American!
你好,我用中文問好!
Reflect -> 中文
瘋狂軟件教育中心依托開發團隊的強大技術實力,把企業最新技術融入實訓課程,打造金牌的品質,才能給予學員黃金的未來,瘋狂軟件憑借過硬的技術實力與豐富的項目開發經驗,贏得了社會的肯定。瘋狂軟件Java培訓師資力量強大,課程內容深入,為學員高薪就業做了很好的鋪墊,擁有豐富就業指導經驗的就業團隊也成為了學員高薪就業的先天優勢。地址:廣州天河區車陂灃宏大廈3樓
總結
以上是生活随笔為你收集整理的java 反射获取对象_使用Java反射机制获取对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像迁移风格保存模型_图像风格迁移也有框
- 下一篇: java 冒泡排序的三种写法_冒泡排序的