18.5.1使用Proxy和InvocationHandler创建动态代理
2024-08-26 05:36:09
package d18_5_1; public interface Person { void walk(); void sayHello(String name);
}
package d18_5_1;
/**
* proxy提供了两个方法来创建动态代理类和动态代理实例
* static Class<?> getProxyClass(ClassLoader loader,Class<?>... interface)
* static Object newProxyInstance(ClassLoader loader,Class<?>[] interface,InvocationHandler handler)
*/
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; class MyInvocationHandler implements InvocationHandler {
/**
* 执行动态代理对象的所有方法时,都会被替换成执行如下的invoke的方法
* 其中:
* proxy代表动态代理对象
* method代表正在执行的方法
* args代表执行代理对象方法时传入的实参
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("正在执行的方法:" + method);
if (args != null) {
System.out.println("下面是执行该方法时传入的实参");
for (Object val : args) {
System.out.println(val);
}
} else {
System.out.println("调用该方法无须实参!");
}
return null;
}
} public class ProxyTest {
public static void main(String[] args) {
//创建以恶搞InvocationHandler对象
//InvocationHandler handler=new MyInvocationHandler();
InvocationHandler handler=new MyInvocationHandler();
//使用指定的InvocationHandler来生成一个动态代理对象
Person p=(Person)Proxy.newProxyInstance(Person.class.getClassLoader(),
new Class[]{Person.class}, handler);
//调用动态代理对象的walk()和sayHello()方法
p.walk();
p.sayHello("齐天大圣"); }
}
最新文章
- iOS地图 -- 区域监听的实现和小练习
- js正则表达式大全(2)
- 关于sysprocesses表各字段的作用
- [UCSD白板题] Greatest Common Divisor
- 查看远程git log
- DOS命令符基本操作
- 长方形—C++
- 正在连接...ORA-12541: TNS: 无监听程序
- Code one 码
- CRMEB 商城系统常见错误修复办法
- mfc双缓冲绘图
- C++: find()函数的注意事项
- mysql性能排查思路
- SpringSecurity认证处理流程
- SQL数据库连接到服务器出错——无法连接到XXX
- http://ctf.bugku.com/challenges#Easy_Re
- final阶段140字评论
- 3分钟搞定Linux系统正则表达式
- configparser模块 logging模块
- 关于offsetTop的误解
热门文章
- About ";self";
- adb获取Android系统属性(adb shell getprop ***)数据来源
- Python学习笔记_Redis
- 【selenium】常见问题
- I.MX6 Android busybox 从哪里生成的
- [Java] 读取文件
- 通用异步 Windows Socket TCP 客户端组件的设计与实现
- python: 使用matplotlib的pyplot绘制图表
- git apply failed (转载)
- 解决Excel打开UTF-8编码CSV文件乱码的问题