反射相关问题

对反射是怎么理解的

动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
JAVA反射机制是在运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性。

要想解剖一个类,必须先要获取到该类的字节码文件对象(class)。而解剖使用的就是Class类中的方法。所以先要获取到每一个字节码文件对应的Class类型的对象。

如何获得字节码文件

Class:是反射的核心类
每个类加载到内存后,系统都会有唯一的一份字节码对象(Person.class/Student.class字节码对象都是Class这个类的实例)

三个方法:
Class.forName(类路径)
类型.class
对象.getClass(),已经实例化的情况下

为什么使用反射

增加程序的灵活性,避免将程序写死到代码里。
例如: 实例化一个 person()对象,
不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。
使用反射: class.forName(“person”).newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要修改配置文件的"类描述"就可以了,不需要重新修改代码并编译。

很少情况下是非用反射不可的。大多数情况下反射是为了提高程序的灵活性。
因此一般框架中使用较多。因为框架要适用更多的情况。对灵活性要求较高。

哪里用到了反射

1、JDBC中,利用反射动态加载了数据库驱动程序。

 java Class.forName('com.mysql.jdbc.Driver');//加载MySQL的驱动类 

2、Web服务器中利用反射调用了Sevlet的服务方法(service)。
3、IDEA等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。
4、很多框架都用到反射机制,注入属性,调用方法,如Spring。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值