java 反射机制及应用

一、Java 反射机制

  1. 定义:
    反射:能够分析类功能的程序。
    反射机制:a.在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;b.对于任意一个对象,都能够调用它的任意一个方法和属性;
            这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  2. 反射机制的作用:
    a. 运行时分析类的功能
    b. 运行时查看对象。
    c. 实现通用的数组操作对象。
    d. 利用Method对象。

  3. 原理
    Java 运行时系统始终为所有的对象维护一个被称为运行时的类型标识。
    这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。
    通过专门的 Java 类访问这些信息。保存这些信息的类被称为 Class, 这 个 名字很容易让人混淆。Object 类中的 getClass( ) 方法将会返回一个 Class 类型的实例。

二、Java 反射机制的运用

  1. Object 类中的 getClass( ) 方法将会返回一个 Class 类型的实例。
    a.加载类的对象, Class对象
            Class cl = Class.getClass();
    例如:
    创建实体类User.java 类。
User user = new User();
//返回类对象
Class cl = user.getclass();    
//返回类的名称
String name = cl.getName();

        b.静态方法 forName 获得类名对应的 Class 对象
        Class cl = Class.forName(“类的包.类名”);

String dassName = "java.util .Random";
Class cl = Cl ass.forName(dassName);
  1. newInstances() : 动态地创建一个类的实例
    例如:
//默认使用类的无参构造方法
User user;
user.getClass().newlnstance();

补充:
         c. 获取类的字段

Class cl;
Field f  = cl.getField(String name);  //指定的字段
Field f  = cl.getDeclaredField(String name); //指定的字段,需要在修改字段值时必定设置可访问性
f.setAccessible(true);	//设置可访问性

         d. 获取类的方法

Class cl;
Method m = cl.getMethod(方法名);
Method m = cl.getDeclaredMethod(方法名,Class... pType);
		
//访问方法之前,设置可访问性
m..setAccessible(true);
		
//执行方法
Object obj = m.invoke(实例的对象,Class... agrValue)

参考:《Java核心技术》

发布了16 篇原创文章 · 获赞 3 · 访问量 539

猜你喜欢

转载自blog.csdn.net/outdata/article/details/99747474