public interface Subject{ public void dosomething(String str); } public class RealSubject implements Subject { @Override public void dosomething(String str) { System.out.println("do something....."+str); } } public class MyInvocationHandler implements InvocationHandler { private Object target=null; public MyInvocationHandler(Object _target){ this.target=_target; } @Override public Object invoke(Object target, Method method, Object[] args) throws Throwable { return method.invoke(this.target, args); } } public class DynamicProxy<T> { public static <T> T newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h){ return (T) Proxy.newProxyInstance(loader,interfaces, h); } } public class Client { public static void main(String[] args) { Subject subject = new RealSubject(); Subject proxy =SubjectDynamicProxy.newProxyInstance(subject);// DynamicProxy.newProxyInstance(sub.getClass().getClassLoader(), sub.getClass().getInterfaces(), h); proxy.dosomeshting("Finish"); } }
被代理的對象須要實現接口java