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("齐天大圣"); }
}

  

最新文章

  1. iOS地图 -- 区域监听的实现和小练习
  2. js正则表达式大全(2)
  3. 关于sysprocesses表各字段的作用
  4. [UCSD白板题] Greatest Common Divisor
  5. 查看远程git log
  6. DOS命令符基本操作
  7. 长方形—C++
  8. 正在连接...ORA-12541: TNS: 无监听程序
  9. Code one 码
  10. CRMEB 商城系统常见错误修复办法
  11. mfc双缓冲绘图
  12. C++: find()函数的注意事项
  13. mysql性能排查思路
  14. SpringSecurity认证处理流程
  15. SQL数据库连接到服务器出错——无法连接到XXX
  16. http://ctf.bugku.com/challenges#Easy_Re
  17. final阶段140字评论
  18. 3分钟搞定Linux系统正则表达式
  19. configparser模块 logging模块
  20. 关于offsetTop的误解

热门文章

  1. About &quot;self&quot;
  2. adb获取Android系统属性(adb shell getprop ***)数据来源
  3. Python学习笔记_Redis
  4. 【selenium】常见问题
  5. I.MX6 Android busybox 从哪里生成的
  6. [Java] 读取文件
  7. 通用异步 Windows Socket TCP 客户端组件的设计与实现
  8. python: 使用matplotlib的pyplot绘制图表
  9. git apply failed (转载)
  10. 解决Excel打开UTF-8编码CSV文件乱码的问题