反射相关

是什么?
任何一个都可以...
任何一个都可以...

为什么?
java从源码到运行经历三个阶段:Source/Class/Runtime
反射是工作在Runtime
重点在于,如果在Source有部分信息是不清晰的,需要在Runtime阶段动态临时加载,反射就可以派上用场。
->不需要知道类名就可以获取类对象
->可以修改和使用private属性和方法

怎么做?
->class : .class getClass forName
->constructor : 
getConstructors()/getConstructors("int.class","String.class")
(类型)gtc.newInstance
->field : getDeclaredField("属性名")/field.setAccessible(true);
->method: getDeclaredMethod("int.class")//参数类型
method.invoke


应用场景?
1.JDBC 的数据库的连接
在JDBC 的操作中,如果要想进行数据库的连接,则必须按照以上的几步完成

通过Class.forName()加载数据库的驱动程序 (通过反射加载,前提是引入相关了Jar包)
通过 DriverManager 类进行数据库的连接,连接的时候要输入数据库的连接地址、用户名、密码
通过Connection 接口接收连接

2.在 Java的反射机制在做基础框架的时候非常有用,行内有一句这样的老话:反射机制是Java框架的基石。
一般应用层面很少用,不过这种东西,现在很多开源框架基本都已经封装好了,自己基本用不着写。
典型的除了hibernate之外,还有spring也用到很多反射机制。最经典的就是xml的配置模式。

Spring 通过 XML 配置模式装载 Bean 的过程:

将程序内所有 XML 或 Properties 配置文件加载入内存中
Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息
使用反射机制,根据这个字符串获得某个类的Class实例
动态配置实例的属性
Spring这样做的好处是:

不用每一次都要在代码里面去new或者做其他的事情
以后要改的话直接改配置文件,代码维护起来就很方便了
有时为了适应某些需求,Java类里面不一定能直接调用另外的方法,可以通过反射机制来实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMUHERO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值