java动态代理
复制代码
1
2
3
4
5
6
7
8
9package com.example.demo02proxy; public class Cat implements Ainmal{ @Override public void say() { System.out.println("猫猫叫"); } }
复制代码
1
2
3
4
5
6
7package com.example.demo02proxy; public interface Ainmal { public void say(); }
代理关键在于InvocationHandler 中的invoke方法,invoke中的三个个参数是将来调用者的参数proxy method args 原始类通过构造方法传递过来,在invoke中调用Object invoke = method.invoke(t, args)返回,前后可以写新功能
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22package com.example.demo02proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; **//代理关键在于InvocationHandler 中的invoke方法,invoke中的 //三个个参数是将来调用者的参数proxy method args 原始类通过 //构造方法传递过来,在invoke中调用Object invoke = //method.invoke(t, args)返回,前后可以写新功能** public class Ihvokation implements InvocationHandler { Object t; public Ihvokation(Object t) { this.t=t; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理前"); Object invoke = method.invoke(t, args); System.out.println("代理后"); return invoke; } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package com.example.demo02proxy; import java.lang.reflect.Proxy; public class ProxyTest { public static void main(String[] args) { ProxyTest proxyTest = new ProxyTest(); Ainmal cat = new Cat(); Ainmal dog= new Dog(); Ainmal getproxy =(Ainmal) proxyTest.Getproxy(dog); getproxy.say(); } public Object Getproxy(Object o){ Ihvokation tIhvokation = new Ihvokation(o); Object o1 = Proxy.newProxyInstance(this.getClass().getClassLoader(), o.getClass().getInterfaces(), tIhvokation); return o1; } }
最后
以上就是霸气小虾米最近收集整理的关于java动态代理,通用代理任何object的全部内容,更多相关java动态代理内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复