java代理基础类1.0
2021-07-09 17:06
标签:null tproxy instance ati handler 错误 void base 赋值 1.代理的书写,是比较麻烦的,写原生代理,又是一件无聊且容易遗漏的事情。写了一个简单的代理类,可借鉴也可指出错误。 调用如下: java代理基础类1.0 标签:null tproxy instance ati handler 错误 void base 赋值 原文地址:https://www.cnblogs.com/jxlys/p/9565270.html 1 package cn;
2
3 import java.lang.reflect.InvocationHandler;
4 import java.lang.reflect.Method;
5 import java.lang.reflect.Proxy;
6
7 /**
8 * 代理类的基础,必须先是设置对象(必须是接口对象赋值实现类),不然获取的代理对象会空指针。
9 * @author jxlys
10 *
11 */
12 public class ProxyBase implements InvocationHandler {
13 private Object obj;
14
15 public ProxyBase() {
16 }
17
18 public ProxyBase(Object obj) {
19 this.obj = obj;
20 }
21
22 public Object getObj() {
23 return obj;
24 }
25
26 public void setObj(Object obj) {
27 this.obj = obj;
28 }
29
30 /**
31 * 获得代理对象
32 *
33 * @param t
34 * @return
35 */
36 public
1 interface A {
2 public void say();
3 }
4
5 class B implements A {
6
7 public void say() {
8 System.out.print("love");
9 }
10 }
11
12 public class TestMain {
13
14 public static void main(String[] args) {
15 A a = new B();
16 a.say();//未代理17 ProxyBase pbu = new ProxyBase(a) {
18 public void beforeAction() {
19 System.out.print("I ");
20 }
21
22 public void afterAction() {
23 A a = getObject(A.class, getObj());
24 System.out.print(" You!");
25 }
26 };
27 a = pbu.getProxy(A.class);
28 pbu = null;//这一步不重要,也可以没有。
29 a.say();// 已代理,也可以用继承的方式实现代理。
30 }
31 }
下一篇:ST——LCA在线算法