反射机制的运用实例
程序员文章站
2024-01-21 20:42:22
...
反射机制的运用实例:
实例一:使用反射机制绕过类型检查(泛型)
//创建集合对象,指定元素类型
ArrayList<String> al = new ArrayList<String>();
al.add("hello");
//获取Class类对象
Class<? extends ArrayList> c = al.getClass();
//获取集合的add方法
Method m = c.getDeclaredMethod("add",Object.class);
//为集合添加元素
m.invoke(al,30);
//把集合元素打印到控制台
System.out.println(al);
实例二:使用反射机制实现对任意类型对象的任意成员属性值进行设置
Class<? extends Object> c = obj.getClass();
Field f = c.getDeclaredField(field);
f.setAccessible(true);
f.set(obj, value);
实例三:属性文件运用到反射机制中
1、在不改变代码的前提下
2、通过配置文件的修改实现不同类的不同方法的调用
//创建属性类对象
Properties prop = new Properties();
//获取输入流
prop.load(new FileInputStream("files/reflect.properties"));
//获取属性文件的键
String className = prop.getProperty("className");
String method = prop.getProperty("methodName");
//根据属性类获取到属性文件的键后,运用到反射机制中
Class c = Class.forName(className);
Constructor con = c.getDeclaredConstructor();
con.setAccessible(true);
Object obj = con.newInstance();
//获取成员方法
Method m = c.getDeclaredMethod(method);
m.setAccessible(true);
//调用成员方法
Object inv = m.invoke(obj);