Java 反射

来源:互联网 发布:知乎能用邮箱注册吗 编辑:程序博客网 时间:2024/04/29 08:48

一、Java 反射可以动态的创建和编译对象,获取正在运行的对象的信息。
反射的功能:
  1、判断对象所属的类
  2、判断对象拥有的成员变量和方法
  3、可以调用 private类型的方法
反射的缺点对性能有影响,慢于直接执行相同的操作

二、Java反射中相关的类
  1、Class:表示正在运行的 Java 应用程序中的类和接口
  2、Field:有关类或接口的单个字段的信息,以及对它的动态访问权限
  3、Method:关于类或接口上单独某个方法(以及如何访问该方法)的信息
  4、Constructor:关于类的单个构造方法的信息以及对它的访问权限

三、反射的应用实例
(1)获取一个类的 Class 对象
Class clzz1 = ReflectTest.class;
Class clzz2 = Class.forName(“com.reflect.test.ReflectTest”);
Class clzz1 = new ReflectTest().class;

(2)Class对象的主要方法
① 获取构造函数Contructor

 Constructor getConstructor(Class[] params) // 获得使用特殊的参数类型的公共构造函数 Constructor[] getConstructors() // 获得类的所有公共构造函数 Constructor getDeclaredConstructor(Class[] params) // 获得使用特定参数类型的构造函数(与接入级别无关) Constructor[] getDeclaredConstructors() // 获得类的所有构造函数(与接入级别无关)  

② 获取字段信息Field

Field getField(String name) // 获得命名的公共成员字段Field[] getFields() // 获得类的所有公共字段Field getDeclaredField(String name) // 获得类声明的命名的字段Field[] getDeclaredFields() // 获得类声明的所有字段

③ 获取方法信息Method

Method getMethod(String name, Class[] params) // 使用特定的参数类型,获得命名的公共方法 Method[] getMethods() // 获得类的所有公共方法 Method getDeclaredMethod(String name, Class[] params) // 使用特写的参数类型,获得类声明的命名的方法 Method[] getDeclaredMethods() // 获得类声明的所有方法 

(3)综合实例

待补充...
0 0
原创粉丝点击