java反射与动态代理
2014-09-27 23:24
423 查看
一直分不清的两个东西,今天记录一下,java反射与动态代理
java反射:1、在运行时分析类的能力
2、在运行是查看对象
3、实现数组的操作代码
4、利用Method对象
在java.lang.reflect包中有三个类Field、Method、Constructor分别用于描述类的域、方法和构造器,这三个类都有一个叫做getName的方法,用来返回相应的名称。
Field类有一个getType方法,用于返回描述域所数类型的Class类型对象。Method和Contructor类包含有能够报告参数类型的方法,Method类型还可以报告返回类型
这是三个类还有一个叫做getModifiers的方法,它将返回一个整型数值,用不同的位开关设置描述public和static这些修饰的使用状况。
另外,还可以利用java.lang.reflect包中的Modifier类的静态方法分析getModifiers返回的整型数值。例如Modifire.isPublic,isPrivate,isFinal等等
class类中的getFields,getMethods和getConstructors方法将分别返回类支持的public域,方法和构造器数组,其中包括超类的共有成员。Class类的getDeclareFields
getDeclareMethods和getDeclaredConstructors方法分别返回类中声明的全部与,方法和构造器数组,其中包括私有和受保护的成员,但不包括超类的成员,以下java代码是用了反射的一小段代码
动态代理:代理模式 ,这是一种设计模式 而java反射是java语言分析类结构,动态执行java程序的本身具有的一种能力,和模式没关系
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
当然两者结合起来可以干很多事,比如面向aop编程,Spring的aop就是这么干的,这里不多说,并且很多框架都用了反射,在执行某个方法,获取参数时就会用到,反射是获取不到方法执行的参数的
资料引用:java核心技术第一版
转载之后请注明出处:/article/10267383.html
飞天博客
谢谢
java反射:1、在运行时分析类的能力
2、在运行是查看对象
3、实现数组的操作代码
4、利用Method对象
在java.lang.reflect包中有三个类Field、Method、Constructor分别用于描述类的域、方法和构造器,这三个类都有一个叫做getName的方法,用来返回相应的名称。
Field类有一个getType方法,用于返回描述域所数类型的Class类型对象。Method和Contructor类包含有能够报告参数类型的方法,Method类型还可以报告返回类型
这是三个类还有一个叫做getModifiers的方法,它将返回一个整型数值,用不同的位开关设置描述public和static这些修饰的使用状况。
另外,还可以利用java.lang.reflect包中的Modifier类的静态方法分析getModifiers返回的整型数值。例如Modifire.isPublic,isPrivate,isFinal等等
class类中的getFields,getMethods和getConstructors方法将分别返回类支持的public域,方法和构造器数组,其中包括超类的共有成员。Class类的getDeclareFields
getDeclareMethods和getDeclaredConstructors方法分别返回类中声明的全部与,方法和构造器数组,其中包括私有和受保护的成员,但不包括超类的成员,以下java代码是用了反射的一小段代码
Class<Test> c=Test.class; Test t=c.newInstance(); t.setId(1); Field f=c.getDeclaredField("id"); f.setAccessible(true); System.out.println(f.get(t)); f.setAccessible(false); Method m=c.getMethod("getId"); Object o=m.invoke(t); System.out.print(o);
动态代理:代理模式 ,这是一种设计模式 而java反射是java语言分析类结构,动态执行java程序的本身具有的一种能力,和模式没关系
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
当然两者结合起来可以干很多事,比如面向aop编程,Spring的aop就是这么干的,这里不多说,并且很多框架都用了反射,在执行某个方法,获取参数时就会用到,反射是获取不到方法执行的参数的
资料引用:java核心技术第一版
转载之后请注明出处:/article/10267383.html
飞天博客
谢谢
相关文章推荐
- 【转】java的反射机制中的动态代理代理(一)--简介
- java的动态代理和反射
- 【转】JAVA核心层--反射--动态代理
- Java反射学习总结四(动态代理使用实例和内部原理解析)
- Java反射那点事(二)动态代理
- 【转】java的反射机制中的动态代理代理(二)--在远程方法调用中运用代理类
- Java反射之JDK动态代理实现简单AOP
- ——Java反射与动态代理
- java学习笔记---类型信息(type information)、反射机制与动态代理
- java利用反射实现动态代理示例
- Java反射和动态代理
- java、反射和动态代理
- Java深度历险——Java反射与动态代理
- 反射和动态代理之Java学习总结
- JAVA核心层--反射--动态代理
- JAVA核心层--反射--动态代理
- 模拟实现Struts拦截器-蕴含着代理模式,AOP,工厂模式,依赖注入,Java 反射,动态构造等机制
- java基础加强(反射、内省、BeanUtils工具类、类加载器、动态代理)
- 07 Java反射/动态代理
- java类初始化/生命周期及反射及动态代理