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...");
}
}