Java反射機制
在運行狀態中
對於任意一個類,都能知道這個類的所有屬性和方法
對於任意一個對象,都能調用它的任意屬性和方法
這種動態獲取信息以及動態調用對象方法的功能稱爲Java語言的反射機制
Class類
Class類是Java反射機制的根源。想要獲得一個類的方法屬性,首先就要獲取這個類的類類對象。
獲取類類對象有三種方法
package testAB;
/**
* Java反射機制
* @author lxw
*
*/
public class Java_reflect {
public static void main(String[] args) throws Exception {
Car car = new Car();
//通過類名獲取類類對象
Class c1 = Car.class;
//通過實例獲取類類對象
Class c2 = car.getClass();
//通過類類方法forName("類的路徑")
Class c3 = null;
try {
c3 = Class.forName("testAB.Car");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(c1 == c2);//true
System.out.println(c2 == c3);//true
System.out.println(c1 == c3);//true
/**
* 類類對象使用方法
*/
//獲取類類對象名稱
System.out.println(c1.getName());
//獲取類類對象的公有方法
c1.getMethods();
//獲取類類對象實例
Car car1 = (Car)c1.newInstance();
car1.run();
//獲取構造方法
c1.getConstructors();
//獲取類類對象屬性
Field[] fields = c1.getFields();
for(Field field :fields){
//成員屬性的類型
Class type = field.getType();
}
}
}
class Car{
String car_Name;
public void run(){
System.out.println("Car run...");
}
}