jdk动态代理简介说明
下文笔者讲述jdk动态代理简介说明,如下所示

例:
动态代理类编写示例
jdk动态代理简介
jdk动态代理: 使用反射机制 当代码运行时动态生成代理类.class文件 我们将这种运行时的代理类称之为"jdk动态代理"

例:
动态代理类编写示例
接口 package com.java265.dynamic; public interface Target { public String execute(); } 实现类 package com.java265.dynamic; public class TargetImpl implements Target { @Override public String execute() { System.out.println("TargetImpl execute!"); return "execute"; } } 代理类 package com.java265.dynamic; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class DynamicProxyHandler implements InvocationHandler{ private Target target; public DynamicProxyHandler(Target target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("========before=========="); Object result = method.invoke(target,args); System.out.println("========after==========="); return result; } } 测试类 package com.java265.dynamic; import java.lang.reflect.Proxy; public class DynamicProxyTest { public static void main(String[] args) { Target target = new TargetImpl(); DynamicProxyHandler handler = new DynamicProxyHandler(target); Target proxySubject = (Target) Proxy.newProxyInstance(TargetImpl.class.getClassLoader(),TargetImpl.class.getInterfaces(),handler); String result = proxySubject.execute(); System.out.println(result); } }
-----运行以上代码,将输出以下信息----- ========before========== TargetImpl execute! ========after=========== execute
注意事项: jdk动态代理和静态代理都编写定义接口,然后才能实现代理功能 因为她们都利用了(java代码的多态性)实现运行时绑定效果
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。