Reflection(反射)是被視為動態語言的關鍵,反射機制允許程式在執行期借助于Reflection API取得任何類的內部資訊,并能直接操作任意物件的內部屬性及方法。
加載完類之后,在堆記憶體的方法區中就產生了一個Class型別的物件(一個類只有一個Class物件),這個物件就包含了完整的類的結構資訊。我們可以通過這個物件看到類的結構。這個物件就像一面鏡子,透過這個鏡子看到類的結構,所以,我們形象的稱之為:反射。、
Java反射機制提供的功能
在運行時判斷任意一個物件所屬的類
在運行時構造任意一個類的物件
在運行時判斷任意一個類所具有的成員變數和方法
在運行時獲取泛型資訊
在運行時呼叫任意一個物件的成員變數和方法
在運行時處理注解
生成動態代理
public class ClassTest {
@Test
public void test1() throws Exception {
//創建一個Class類物件
Class clazz = Person.class;
//通過反射創建Person類物件
Constructor con = clazz.getConstructor(String.class,int.class);
Object obj = con.newInstance("Bob",12);
System.out.println(obj);
//呼叫Person類的方法、屬性
Field age = clazz.getDeclaredField("age");
age.set(obj,20);
System.out.println(obj);
Method show = clazz.getDeclaredMethod("show");
show.invoke(obj);
}
}
class Person{
private String name;
public int age;
public Person(String name,int age){
this.age = age;
this.name = name;
}
public void show(){
System.out.println("我是show方法");
}
@Override
public String toString(){
return "Person{name=" + name + ",age=" + age + "}";
}
}
uj5u.com熱心網友回復:
這個例子確實講得很透uj5u.com熱心網友回復:
反射講得很好uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/181124.html
標籤:Java相關
上一篇:獲取jsp頁面中上傳的檔案的jue'dui'lu'jing
下一篇:Java離線文字轉語音誰有方法啊
