您的位置:首页 > 编程语言 > Java开发

java 反射机制

2016-02-11 16:42 357 查看
java 反射机制

1.java反射机制:动态的加载类,动态的创建对象,动态的解剖类内部的成员变量,方法实体。主要用在框架中

配置文件中类的动态加载,解析。

2.动态的加载类,三种方式

Class clazz1 = Class.forName("com.java.reflection.Person");
Class clazz2 = Person.class;
Class clazz3 = new Person().getClass();


3.动态的加载类,动态创建类的对象

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


4.动态的加载类,动态创建类的对象,动态调用方法

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: