关于反射学习

Posted 鹤少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于反射学习相关的知识,希望对你有一定的参考价值。

Java中发射机制非常重要,在框架中使用频繁

发射使用流程:

1、通过Class.classforName(“配置文件中的路径”); 获取 字节码文件

Class clazz = Class.forName("Reflect.Person");

2、通过 clazz.getConstructor(参数类型.class);获得 构造函数

Constructor con =  clazz.getConstructor(null); //(构造函数参数类型)

使用 .newInstance(null);构造对象

p = (Person) con.newInstance(null); //给对象的参数

3、通过 clazz.getMethod(“方法名”,参数类型.class);获得 成员方法

Method method = clazz.getMethod("getName", null);//获取 getName();方法

method.incoke(“对象”,传参);

method.invoke(p, null);

4、通过clazz.getDeclaredMethod(“方法名”,参数类型.class);获得 私有方法

Method method = clazz.getDeclaredMethod("printTo", String.class);

        通过method.setAccessible(true);设置访问权限

method.setAccessible(true);            //暴力访问类私有方法

method.invoke(p,"xiehe");

5、通过clazz.getField(“字段名”);获取类的 字段属性

Field field = clazz.getField("add");//获得字段域

通过field.get(对像);获得字段值

String value = (String) field.get(p);

6、通过clazz.getDeclaredField(“字段名”);获得私有 字段属性

Field field = clazz.getDeclaredField("num");

field.setAccessible(true); //设置访问权限

int value = (int) field.get(p); //获取值

以上是关于关于反射学习的主要内容,如果未能解决你的问题,请参考以下文章

golang 关于 interface 的学习整理

关于UnityShader的入门学习

关于JAVA 反射 基础知识/编码经验的一些总结

关于JAVA 反射 基础知识/编码经验的一些总结

反射?它是什么?浅谈反射

关于反射的研究