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