java之反射机制

一.反射的包:

java.lang.reflect:
	所有的反射api都在该包下,使用的时候需要导入包
java.lang : 包下面的工具类使用时不需要导入包
class类:
	同步,互斥锁
	object.class
	java.lang.Class: java反射机制的核心类
	Constructor: 主要用于描述构造方法的类
		构造方法的结构:
			public: 方法修饰符 getModifiers();
			方法名:getName();
			参数:统计参数个数:getParamenterCount();
			获取参数类型: getParamenterTypes();
	FIeld 类:主要用于描述字段(成员变量的信息)
	Method类:主要用于描述方法的类
		访问修饰符
		返回值类型
		参数类型
		参数个数
		方法名
		方法的调用
class类的实例化方法:
	class forName("java.lang.String");
	Class getClass();//通过Object的getClass 方法返回class类对象
	int.class;class字段的方式获取class对象
	Object newInstance();用于对象的实例化
通过反射进行对象的实例化:
	正常情况下的实例化对象的方法:
		object obj = new object();
		object obj2 = new object("dsf");
	反射的方法实例化对象;
		1.获取反射类对象:
			class clazz = class.forName("comqiku.Test");
		2.newInstance()方法:进行实例化
			Test test = clazz.newInstance();
		3.带参的话:
			Construcor getConstructor(int.String.class);
Constructor类:主要用于描述构造方法:
	Constructor class.getConstructor();进行实例化
	常用方法:
		newInstance():实例化方法
		newInstance(int.class,String.class);实例化方法
field字段类:
	getDecaredFields(); 获取所有的字段(包括private,public,protected,默认)
	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>在代理类中添加目标对象的引用
		
		a.定义一个共通接口
		b.目标对象和代理对象要实现同一个接口
		c.在代理对象类中定义接口的实例;
	2.动态代理模式
	3.CGLIB动态代理模式
		1.导入功能包
		2.实现原理是通过在内存中构建被代理对象的子类进行扩展功能
		3.使用拦截机制,去加载扩展功能的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值