java 反射机制
1.java反射机制:动态的加载类,动态的创建对象,动态的解剖类内部的成员变量,方法实体。主要用在框架中
配置文件中类的动态加载,解析。
2.动态的加载类,三种方式
Class clazz1 = Class.forName("com.java.reflection.Person");
Class clazz2 = Person.class;
Class clazz3 = new Person().getClass();
Class clazz = Class.forName("com.java.reflection.Person");
//获得Person类中的无参数的构造方法
Constructor c = clazz.getConstructor(null);
c.newInstance(null);
//获得Person类中的一个参数的构造方法
Constructor c1 = clazz.getConstructor(String.class);
c1.newInstance("name");
Class clazz = Class.forName("com.java.reflection.Person");
Person p = (Person) clazz.newInstance();
Method m1 = clazz.getMethod("method1", null);
m1.invoke(p, null);
Method m2 = clazz.getMethod("method2", String.class);
m2.invoke(p, "name");
Method m3 = clazz.getMethod("method3", String.class,int.class);
m3.invoke(p, "name",123);
Method m4 = clazz.getMethod("method4", String.class,int[].class);
m4.invoke(p, "name",new int[]{123,222});
Method main = clazz.getMethod("main", String[].class);
main.invoke(p,new Object[]{new String[]{"ss"}});
5.使用反射机制加载配置文件中类的具体实例
Properties pt = new Properties();
pt.load(Client.class.getClassLoader().getResourceAsStream("com/Factory/Spring/application.properties"));
String VehicleName = pt.getProperty("VehicleType");
Object o = Class.forName(VehicleName).newInstance();
Movable m = (Movable)o;
m.run();