java反射

Posted xj-record

tags:

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

反射:

Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。

获取Class对象的方式:

  1、Object.getClass()

  2、Object.class

  3、Class.forName()

父Class:

  class.getSupperClass()

 

反射就是通过这三个类才能在运行时改变对象状态:

java.lang.reflect.Field :对应类变量

java.lang.reflect.Method :对应类方法

java.lang.reflect.Constructor :对应类构造函数

1、field

getDeclaredField(String name)获取指定的变量(只要是声明的变量都能获得,包括private)
getField(String name)获取指定的变量(只能获得public的)
getDeclaredFields()获取所有声明的变量(包括private)
getFields()获取所有的public变量
setAccessable();该方法能够操作private的属性
2、method
getDeclaredMethod(String name, Class<?>... parameterTypes)
根据方法名获得指定的方法, 参数name为方法名,参数parameterTypes为方法的参数类型,如 getDeclaredMethod(“eat”, String.class)
getMethod(String name, Class<?>... parameterTypes)根据方法名获取指定的public方法,其它同上
getDeclaredMethods()获取所有声明的方法
getMethods()获取所有的public方法
3、constructor
getDeclaredConstructor(Class<?>... parameterTypes)获取指定构造函数,参数parameterTypes为构造方法的参数类型
getConstructor(Class<?>... parameterTypes)获取指定public构造函数,参数parameterTypes为构造方法的参数类型
getDeclaredConstructors()获取所有声明的构造方法
getConstructors()获取所有的public构造方法

 创建对象:

  Constructor.newInstance();可以使用任何构造创建

  Class.newInstance();只能通过无参构造器创建对象

 

https://www.jianshu.com/p/1c10b6c20d14

 










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

反射机制入门

反射机制入门

反射机制入门

使用反射在外部JAR / CLASS上调用包含Hibernate事务的方法(Java EE)

为啥我的 Ray March 片段着色器反射纹理查找会减慢我的帧速率?

OpenGL片段着色器不照亮场景