哪个网站有做形象墙高端网站建设的价格

一、什么是反射?

换句话说就是(从类里拿出来)

可以获取到:(利用反射,我们可以获取到类中所有的东西)
获取是先从class字节码文件中获取的

二、获取class对象的三种方式

三种方式也对应了三种阶段
1、Class.forName("全类名");

全类名 = 包名+类名
2、类名.class

3、对象.getClass();

4、代码实现
三种方式获取到的字节码文件对象其实是一样的

三、反射获取

1、利用反射获取构造方法


①、示例代码:

②、获取所有的构造方法:

③、获取单个构造方法:

④、获取方法权限修饰符:


⑤、获取参数个数、获取参数类型、获取所有参数:


⑥、获取私有:(暴力反射)


2、利用发射获取成员变量

①、获取class字节码文件的对象

②、获取所有公共成员变量

③、获取所有成员变量

④、获取单个的成员变量

⑤、获取权限修饰符

⑥、获取成员变量的名字

⑦、获取成员变量的数据类型

⑧、获取成员变量记录的值


⑨、修改对象里面记录的值

3、利用反射获取成员方法

①、获取class字节码文件对象

②、获取里面所有的公共方法对象

包含父类中所有的公共方法
③、获取里面所有的方法对象

④、获取单个的方法

⑤、获取方法的修饰符

⑥、获取方法的名字

⑦、获取方法的形参

⑧、获取方法的抛出的异常

⑨、方法运行



四、反射的作用

1、练习1:保存信息

示例代码:




完整代码:(创建IO流存入本地文件)


2、练习2:跟配置文件结合动态创建

示例代码:
(配置文件 prop.properties)

反射和配置文件结合,动态创建对象



3、小结
getClass()是定义在Object类中的,因此所有的对象都可以调用它


五、动态代理
1、什么是动态代理?
动态代理可以无侵入式的给代码增加额外的功能

2、程序为什么需要代理?代理长什么样?

①、示例代码
BigStar.java(JavaBean)

Star.java(接口)

3、小结

4、如何为Java对象创建一个代理对象?
①、newProxyInstance(1,2,3)

②、示例代码:(创建一个代理)
ProxyUtil.java


参数一:固定格式
参数二:指定数组,如果有多个接口,可以将多个接口都放入数组
参数三:匿名内部类

测试类:


JavaBean(BigStar)

③、小结


