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代码的多态性)实现运行时绑定效果
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


