黑马程序员技术交流社区
标题:
关于张老师的视频
[打印本页]
作者:
侯伟浩
时间:
2011-12-9 10:19
标题:
关于张老师的视频
本帖最后由 侯伟浩 于 2011-12-21 16:39 编辑
看张老师的关于动态代理的时候,说到往invoke()方法中传进一个对象,再调用它的方法。怎么就没有视频了呢?
视频不全啊。能不能给段代码研究研究?
作者:
李振元
时间:
2011-12-9 10:22
你只要看API中的这个方法,就会理解原理了
作者:
周敏2011nc
时间:
2011-12-21 16:08
本帖最后由 周敏2011nc 于 2011-12-21 16:09 编辑
class MethodSelector implements InvocationHandler{
private Object proxied;
public MethodSelector(Object proxied){
this.proxied = proxied;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if(method.getName().equals("interesting"))
System.out.println("Proxy detected the interesting method");
return method.invoke(proxied, args);
}
}
interface SomeMethods{
void boring1();
void boring12();
void interesting(String arg);
void boring3();
}
class Implementation implements SomeMethods{
public void boring1() {
System.out.println("boring1");
}
public void boring12() {
System.out.println("boring2");
}
public void boring3() {
System.out.println("boring3");
}
public void interesting(String arg) {
System.out.println("intererting " + arg);
}
}
public class SelectingMethods {
public static void main(String[] args) {
SomeMethods proxy = (SomeMethods)Proxy.newProxyInstance(
SomeMethods.class.getClassLoader(),
new Class[]{SomeMethods.class},
new MethodSelector(new Implementation()));
proxy.boring1();
proxy.boring12();
proxy.boring3();
proxy.interesting("bonobo");
}
}
该程序通过Proxy.newProxyInstance()创建动态代理,invoke()方法传入代理对象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2