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();
}
}