Java反射

一 Class类

1 Java的反射是指程序在运行期可以拿到一个对象的所有信息

2 反射的出现原因:为了解决在运行期,对一个实例一无所知的情况下,如何调用其方法。

3 反射方法:通过Class的实例获得class的信息

4 获取class的Class实例的方法:

1 直接通过一个class的静态变量class获取
2 通过实例变量提供的getclass()方法
3 知道class完整类名,通过静态方法Class.forame()获取

5 JVM动态加载特性:只有第一次用到一个类时,才将其加载到内存

6 JVM为每个创建的class和interface创建了Class实例来保存class和interface信息

7 通过反射可以直接修改字段的值

8 反射是非常规方法,会破会类的封装

9 invoke()的第一个参数是对象实例,第二个可变参数要与方法参数一致
如果获取的是静态方法,invoke()的第一个参数永远为null

10 多态
使用反射调用方法时,仍然遵循多态原则,总是调用实际类型的复写方法

二 调用构造方法

1 用反射来创建实例,通常使用Class提供的newInstance()方法,(此方法只能调用该类的public无参数构造方法)
Person p = person.class.newInstance()

三 获取继承关系

1 Class getSuperclass():获取父类类型;
Class[] getInterfaces():获取当前类实现的所有接口。

四 动态代理

1 class可以实例化,interface()不能实例化,interface的变量总是通过向上转型并指向某个实例的。

2 动态代理:在运行期动态创建某个interface的实例。

3 静态写法:先定义接口,再编写实现类,最后创建实例,转型为接口并调用。

4 动态代码:先定义接口,直接通过Proxy.newProxyInstance()创建一个接口对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值