JAVA 反射学习

Java反射

参考《Java安全漫谈》

概念

反射是Java的特征之一,是一种间接操作目标对象的机制,核心是JVM在运行状态的时候才动态加载类,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的方法/访问属性。这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。
 

java反射机制组成需要重点注意一下的类:

  • java.lang.Class  :类对象
  • java.lang.reflect.Constructor 类构造器对象
  • java.lang.reflect.Field:类的属性对象;

  • java.lang.reflect.Method   类方法对象

Class类

在程序运行期间,Java运行时系统始终为所有对象维护一个运行时类型标识。这个信息会跟踪每个对象所属的类。虚拟机利用运行时类型信息选择要执行的正确方法。

可以使用一个特殊的Java类访问这些信息。保存这些信息的类名为Class

能得到Class类,也就是 java.lang.class对象 的三种方法: 

  •  .class 在加载了某个类的时候,可以直接获取他的属性,如:
    System.out.println(cla.class);
  • obj.getClass() 如果存在了某个 obj实例,那么可以通过getClass()方法得到这个类对应的class例如:
    System.out.println(cla.getClass());
  • Class.forName ,也是最常用的,知道了哪个类的完整包名或类名后,可以作为参数:
    Class<?> cla = Class.forName("a.cat"); //包名下的cat类
    System.out.println(Class.forName("a.cat&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值