反射

什么是反射

反射是 Java 编程语言的一个特性,它提供了在运行时检查和动态调用类、方法、属性的能力。

反射能做什么

反射可以在运行时检查类,接口,方法和变量。还可以实例化对象、调用方法、获取和设置变量值。比如当我们不知道一个类中是否拥有某个方法时,我们就可以使用反射来检查是否拥有这个方法。

反射常用类

常用类

  • Class:Class 类表示正在运行的 Java 程序中的类和接口。
  • Field:提供有关类或接口的单个域的信息和动态访问。如数据类型,访问修饰符,域的名称和值。
  • Method:提供有关类或接口上的单个方法的信息和访问权限。如访问修饰符,返回类型,名称,参数类型和方法的异常类型。
  • Constructor:提供有关类的单个构造函数的信息和访问权限。例如构造函数的访问修饰符,名称和参数类型。
  • Modifier:提供了有关访问修饰符的信息。

Class

Class 类没有公共构造方法,可以通过以下方法获取 Class 实例。

  • Object 提供的 getClass() 方法。
  • 类名.Class
  • Class.forName(String className) 方法,className 为类的全限定名。

Class 类常用方法:

方法描述
Field getField(String name) 获取指定的域对象
Field[] getFields() 返回所有的公有域对象数组
Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回指定的方法对象
Method[] getMethods() 返回所有的公有方法对象数组
Method[] getDeclaredMethods() 返回所有方法对象数组
String getName() 获取全限定名

更多方法请查阅官方文档

反射虽然提供了强大的能力,但是确会带来很多问题,如性能降低,权限漏洞以及权限问题。所以能不用反射尽量不用。

posted @ 2020-11-29 12:19  lovivi  阅读(62)  评论(0)    收藏  举报