package com.example.springdemo.A012; import java.lang.reflect.Proxy; //jdk代理只能针对接口代理 public class JdkProxyDemo { interface Foo{ void foo(); } //目标类 static class Target implements Foo{ @Override public void foo() { System.out.println("target foo"); } } public static void main(String[] args) { Target target = new Target(); ClassLoader loader = JdkProxyDemo.class.getClassLoader(); //用来加载在运行期间动态生成的字节码 Foo proxy = (Foo) Proxy.newProxyInstance(loader, new Class[]{Foo.class},(p,method,param)->{ System.out.println("before..."); Object result = method.invoke(target,param); return result; }); proxy.foo(); //Target和proxy是兄弟关系,它两都实现了同样的foo接口 //jdk动态代理允许Target是finnal的 } }
jdk实现动态代理
最新推荐文章于 2022-09-23 15:29:38 发布