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 = Class.forName(dassName);

注:1.有些时候又必须执行初始化就选择Class.forName;
       2.只需要知道这个类的存在而不需要初始化的情况使用Classloder.loaderClass;

  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核心技术》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值