反射机制

反射:
反射机制是使程序具有动态特性的非常关键的一种机制
需求1:通过类名或者对象获取类内部信息
需求2:根据指定的类名,类字段名和所对应的数据,得到该类的实例
需求3:根据指定的任意(Object)对象,获取其属性值或者调用其方法
反射用到的包:java.lang.reflect
反射核心类:java.lang.Class
1>使用Class类可以访问任何给定数据类型的信息
2>使用Constructor了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或final)等。
public:方法修饰符 getModifiers();
方法名: getName();
参数:统计参数个数:getParameterCount()
获取参数类型:getParameterTypes()
3>使用Method了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或final)等。
4>Field类:主要用于描述字段(成员变量的信息)
Class类的实例化方式:
Class forName(“java.lang.String”);
Class getClass();//通过Object的getClass方法返回Class类对象
int.class;class字段的方式获取Class对象
通过反射进行对象的实例化:
正常情况请下的实例化对象方法:

Object obj = new Object();
			Object obj2 = new Object("dsf);

反射的方式实例化对象:
1.获取反射类对象:

Class cl = Class.forName("Test");

2.newInstance()方法:进行实例化

Test test = clazz.newInstance();

3.带参的话:

Constructor getConstructor(int.class,String.class);

Field字段类:
getDecaredFields();获取所有的字段
getFields();获取public类型字段
getDecaredFiled(“id”);获取名称为id的字段
getName();获取字段名
getModifiers();获取权限修饰符
getType();获取字段的类型
get(Object obj);获取字段值
set(obj,value);给字段设置值
setAccessible(true);设置为允许为私有字段赋值
Method方法类:
getName();获取方法名
invoke(Object obj,Object…args);通过反射机制调用方法
设计模式之代理模式:
Person eat(){
//人要吃饭
}
ProxyPerxon
Person person

	eat(){
		//洗手
		person.eat();
		//刷碗
	}

代理模式:
1.静态代理模式
1>目标对象
2>代理对象
3>在代理类中添加目标对象的引用
静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。
2.动态代理模式
特点:
1.代理对象,不需要实现接口
2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)
3.动态代理也叫做:JDK代理,接口代理
3.Cglib动态代理模式
1.需要引入cglib的jar文件,直接引用spring-core-x.x.x.jar即可.
2.引入功能包后,就可以在内存中动态构建子类
3.代理的类不可为final,否则报错
4.目标对象的方法如果为final/static,那么就不会被拦截,即不会执行目标对象额外的业务方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值