实现一个JDK代理demo
2024-10-21 11:50:55
JDK代理,非常简单地实现了动态代理(首先是实现对应的InvocationHandler;然后,以接口来为被调用目标构建代理对象,代理对象简介运行调用目标,并提供额外逻辑插入)
缺点:它是只能以接口为中心的。优点:依赖JDK,更稳定可靠,跟着JDK升级,代码简单。
package jesse.test; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; interface Hello{
void sayHello();
} class HelloImpl implements Hello{ @Override
public void sayHello() {
System.out.println("my hello");
} } class MyInvocationHandler implements InvocationHandler{
private Object target;
public MyInvocationHandler(Object target) {
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("proxy invoke sayhello");
Object result = method.invoke(target, args);
return result;
}
} public class MyJDKProxy {
public static void main(String[] args) {
HelloImpl hello = new HelloImpl();
MyInvocationHandler handler = new MyInvocationHandler(hello);
//构造代码实例
Hello proxyHello = (Hello)Proxy.newProxyInstance(HelloImpl.class.getClassLoader(), HelloImpl.class.getInterfaces(),handler);
//调用代理方法
proxyHello.sayHello();
} }
最新文章
- 基于 jQuery 实现垂直滑动的手风琴效果
- Pandas系列教程——写在前面
- JQ限制输入字数,并提示剩余字数
- Maven 打胖jar
- Android 软件盘 动态设置 layout
- jade初学
- JS浏览器类型推断方法
- pumping lemma for finite regular language?
- javascript: 常用操作
- N皇后问题——递归求解
- Java中的==、equals、hasCode方法
- 纳税服务系统【统计图Fusionchart】
- Django 学习笔记
- sublime text 3 package Install 安装失败解决方法
- ajax post 提交数据和文件
- vue 條件語句
- 多继承之MRO
- Mysql抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)
- velocity模板实战
- Valid Parentheses &; Longest Valid Parentheses