java反射和动态代理
来源:互联网 发布:魔方格软件好用吗 编辑:程序博客网 时间:2024/05/17 22:23
说实话,java反射是我刚搞懂的,搞了一年的java,连个java反射都不会,感觉愧对丹尼斯里奇祖师爷。
好了,废话不多说了,说说自己的见解。
反射,不仅在java中有,c#中也是有java机制的,反射的作用是让你自己你自己所有的属性,方法和构造器。而反射主要用于框架中,就是我们import导入了框架中的类,但是该类的属性,方法是通过反射知道的,总结来说,导入类之后,我知道了自己有几斤几两,知道我自己有什么属性,方法,那么我就可以用我的这些属性和方法。
动态代理是在代理的基础上衍生的更高级的代理,而动态代理也是主要用于框架,其原理就是:
我想要调用某个类,但是我不直接去调用,而是交给一个中间代理的类,让他帮我去调用,其效果和直接调用是一样的,只不过,这样的设计是不是减小了耦合呢?!
而说的动态代理,其实就是在原来写死的代理基础上,让他可以通过参数动态改变的。
网上看到一个特别好的例子:
这是想要被调用的类:
public interface Interface { void doSomething(); void somethingElse(String arg);}public class RealObject implements Interface { public void doSomething() { System.out.println("doSomething."); } public void somethingElse(String arg) { System.out.println("somethingElse " + arg); }}
这是代理方法:
public class DynamicProxyHandler implements InvocationHandler { private Object proxyed; public DynamicProxyHandler(Object proxyed) { this.proxyed = proxyed; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { System.out.println("代理工作了."); return method.invoke(proxyed, args); }}
这是测试类:
public class Main { public static void main(String[] args) { RealObject real = new RealObject(); Interface proxy = (Interface) Proxy.newProxyInstance( Interface.class.getClassLoader(), new Class[] {Interface.class}, new DynamicProxyHandler(real)); proxy.doSomething(); proxy.somethingElse("luoxn28"); }}
阅读全文
0 0
- Java反射和动态代理
- java、反射和动态代理
- Java反射和动态代理
- java反射和动态代理
- java的动态代理和反射
- java反射机制和动态代理
- JAVA的反射机制和动态代理
- Java反射机制和动态代理实例
- JAVA的反射机制和动态代理
- java反射和动态代理的理解
- java反射和动态代理详解
- JAVA中的反射机制和动态代理
- Java 反射-动态代理
- java动态代理、反射
- 反射和动态代理
- 反射和动态代理
- Java反射和动态代理详解和实例
- Java反射和动态代理详解和实例
- mac配置mysql
- java 线程队列
- 在html的头部加入meta使得所有的资源请求由http请求转成https请求
- Centos 7安装centreon后无法进行WEB安装解决。
- 每天一个linux命令(5):rm 命令
- java反射和动态代理
- 第九篇:UDP协议
- iOS App 启动性能优化
- 从数据库导出xml文件
- Mysql Tips
- 概率DP RED IS GOOD
- 【转载】Unity C# 调用C++ dll 问题集锦
- 每天积累一点(一三)--JVM之GC算法
- SSM发送Email