Java反射机制学习总结
2018-08-20 本文已影响0人
耀东wang
介绍反射机制
1.反射机制的应用场景
逆向代码、动态生成类框架等,使用反射机制能够大大的增强程序的扩展性。
2.反射的基本步骤
首先获得Class对象,然后实例化对象,获得类的属性、方法或者构造函数,最后访问属性、调用方法、调用构造函数创建对象。而invoke()方法就是用来执行指定对象的方法。
3.简单小例子
Class Clz = InflectClass.class;
try {
InflectClass obj = (InflectClass) Clz.newInstance();
Method m = Clz.getDeclaredMethod("showMessage",String.class);
m.setAccessible(true);
Log.d(TAG, "onCreate: "+m.invoke(obj,"SerryWang"));
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
代码说明
首先我们获得相关类的字节码文件,通过newInstance()可以对应类的实例。我们可以通过getDeclaredMethod访问相应的方法,如果是私有的还要用到setAccessible(true),getDeclaredMethod()方法两个参数的意义分别是
1.方法名 2.方法参数类型
然后通过invoke就可以执行相应的方法,invoke两个参数的意义分别是:1.对象名 2.参数值。