public interface User {
void save();
}
public class UserImpl implements User {
public void save() {
System.out.println("save");
}
public static void main(String[] args) {
UserHandler handler=new UserHandler();
User service=(User) handler.bind(new UserImpl());
service.save();
}
}
public class UserHandler implements InvocationHandler {
private Object target;
public Object bind(Object target){
this.target=target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(),
target.getClass().getInterfaces(),this);
}
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
Object result = null;
long start = System.currentTimeMillis();
result = method.invoke(target, args);
long end=System.currentTimeMillis();
System.out.println("方法耗时=="+(end-start)/1000);
return result;
}
}
PS:原理还没彻底搞懂,主要反射那块,抽空再深入研究一下,先记录。