MCPcopy Create free account
hub / github.com/ZTFtrue/My-note / JDKDynamicProxy

Class JDKDynamicProxy

java/Proxy AOP(Java 代理)/src/main/java/JDKDynamicProxy.java:10–42  ·  view source on GitHub ↗

JDK 代理 通过反射代理方法,比较消耗系统性能 JDK代理需要用构造方法动态获取具体的接口信息,如果不实现接口的话, 无法初始化

Source from the content-addressed store, hash-verified

8 * JDK代理需要用构造方法动态获取具体的接口信息,如果不实现接口的话, 无法初始化
9 */
10public class JDKDynamicProxy implements InvocationHandler {
11 private Object target;// 维护一个目标对象
12
13 public JDKDynamicProxy(Object target) {
14 this.target = target;
15 }
16
17
18 @SuppressWarnings("unchecked")
19 public <T> T getProxy() {
20 return (T) Proxy.newProxyInstance(
21 target.getClass().getClassLoader(),
22 target.getClass().getInterfaces(),
23 this
24 );
25 }
26
27 @Override
28 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
29 before();
30 Object result = method.invoke(target, args);
31 after();
32 return result;
33 }
34
35 private void before() {
36 System.out.println("Before");
37 }
38
39 private void after() {
40 System.out.println("After");
41 }
42}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected