反射

反射

反射机制的概念

  • 通过反射机制,程序员可以知道任意类中的所有属性和方法(哪怕是私有的),对于任意对象可以调用任意属性和方法。

为什么使用反射机制

扩展未知的应用。

如在框架中使用配置文件

如何使用反射机制

  • 通过类的全名获取
    • Class bookClass=Class.forName(“com.Book”);
  • 通过类获取
    • Class bookClass=Book.class;
  • 通过对象获取
    • Book book=new Book(“think in java”,book);
    • Class bookClass=book.getClass();
  • 使用方法对象
    • MEthod m=bookClass.getDeclaredMethod(“方法名”,“参数的类对象”);
    • m.invoke(“对象名”,“实参”);
  • 调用构造对象
    • Constructor c=bookClass.getDeclaredConstructor(“参数列表的类对象”);
    • Book book=c.newInstance(“实参”);
  • 使用字段对象
    • Field field=bookClass.getDeclaredField(“属性名”);
    • 修改字段值:field.set(“对象名”,值);
    • 得到字段值:field.get(“对象名”);

笔记注释

这篇笔记作于学习反射期间,为了防止自己在一段时间不碰反射后,导致看不懂该笔记,特意做一个注释。
首先,要知道反射的原理。一个Java程序的执行流程大致是这样的:编写源码(.java文件),编译成可执行文件(.java->.class->二进制文件),执行。.java文件我们都知道,因为我们写的第一个程序“hello world”其后缀就是.java。那么什么是.class文件呢?
我的理解是这样的:JVM第一次加载一个类时,会创建一个class实例,这个实例记录了这个类的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等。而反射就是通过获取这个实例对象,从而获取这个类的所有信息。而一些常用方法就是上面笔记的内容了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值