JAVA-Reflect 專題
①Class類的使用
②方法的反射
③成員變量的反射
④構造函數的反射
⑤java類的加載機制
Ⅰ在面向對象的世界裡,萬事萬物皆為對象
類是對象,類是java.lang.Class類的實例對象
ⅡClass類的實例對象有三種表示方式
//第一種表達方式(已知類名)
//第二種表達方式(已知對象)
//第三種表達方式(通過類全稱)
package com.tsh.reflect;
public class ReflectDemo {
public static void main(String[] args) {
Foo foo1=new Foo();
//Class類的實例對象
//第一種表達方式(已知類名)
Class c1=Foo.class;
//第二種表達方式(已知對象)
Class c2=foo1.getClass();
//第三種表達方式(通過類全稱)
Class c3=null;
try {
c3=Class.forName("com.tsh.reflect.Foo");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//官網解釋:c1和c2表示了Foo類的類類型(class type)
//一個類只可能是Class類的一個對象,因此下面的輸出true
System.out.println(c1==c2);
//可以通過類的類類型創建該類的實例對象
try {
//該類需要有無參數的構造方法
Foo foo2=(Foo) c1.newInstance();
foo2.print();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class Foo{
void print(){
System.out.println("test");
}
}