package org.hibernate.tutorial.util;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.List;
public class ListHandler implements InvocationHandler {
public List str;
public List bind(List str2) {
this.str = str2;
List proxyStr = (List)Proxy.newProxyInstance(str2.getClass().getClassLoader(),
str2.getClass().getInterfaces(), this);
return proxyStr;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object obj = null;
if ("toString".equals(method.getName())) {
System.out.println("entry youself code here");
} else {
obj = method.invoke(str, args);
}
return obj;
}
}
package org.hibernate.tutorial.util;
import java.util.ArrayList;
import java.util.List;
public class TestDynamicProxy {
/**
* @param args
*/
public static void main(String[] args) {
ListHandler sh = new ListHandler();
List proxyStr = sh.bind(new ArrayList());
proxyStr.toString();
}
}
本文介绍了一个使用Java反射API实现的动态代理模式示例。通过创建一个实现了InvocationHandler接口的ListHandler类,为List接口生成代理对象,并重写invoke方法来增强目标对象的功能。
551

被折叠的 条评论
为什么被折叠?



