java反射

了解反射的前提,首先必须了解一下是类加载机制

1.类加载机制

a.编译原代码(将java代码转换成.CLASS文件)

b.加载class文件(jvm读取并加载class文件到内存中)

c.链接(验证类的内部结构的正确性,把符号引用转换成实际引用)

符号引用:

就是一串字符串,比如java.long.object,我们只知道object引用,但是不知道这个对象的具体位置在哪里

实际引用:

一个具体真正的对象,存在在内存中

d.初始化(对类进行初始化值,加载静态代码块以及静态变量会初始化值,如果类有父类的话,会先初始化父类)

e.定位main方法的位置

f.执行main方法

2.什么是反射?

这里就不用官方的话来回答了,用简洁的话概括,动态的加载对象

3.什么时候要用到反射?

不方便修改某一个类,但是还是要用到类里面的变量和方法,比如这个类中的变量和方法是用privice修饰,那么正常调用的话是没法调用的

4.反射的实现方式

原理:

字节码文件加载到内存的时候,jvm会对这个字节码文件进行剖析,并且会创建一个class对象,将字节码信息全部加载到class对象中,那么我们呢就可以直接获取这个class对象,来用到这个对象里面的方法和属性变量了

5.创建对象的方式 

直接new出来;

利用反射创建出来

6.反射的好处和坏处

好处是可以动态的获取类的信息,进一步实现需要的功能;比如mybatis的xml可以直接使用业务层的mapper,原理是利用了反射动态创捷接口和实现类

坏处是效率没有直接new的时候高,因为如果使用反射,查找到类的资源后,还需要根据类加载器去创建这个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值