1 package DynamicProxy; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Proxy; 6 7 interface AbstractClass { 8 public void show(); 9 } 10 11 class ClassA implements AbstractClass { 12 public void show() { 13 System.out.println("I am A !"); 14 } 15 } 16 17 class ClassB implements AbstractClass { 18 public void show() { 19 System.out.println("I am B !"); 20 } 21 } 22 23 class Invoker implements InvocationHandler { 24 AbstractClass ac; 25 public Invoker(AbstractClass ac) { 26 this.ac = ac; 27 } 28 29 @Override 30 public Object invoke(Object proxy, Method method, Object[] args) 31 throws Throwable { 32 method.invoke(ac, args); 33 return null; 34 } 35 36 } 37 38 public class DynamicProxyTest { 39 public static void main(String[] args) { 40 41 Invoker invoker1 = new Invoker(new ClassA()); 42 AbstractClass ac1 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[] {AbstractClass.class}, invoker1); 43 ac1.show(); 44 45 Invoker invoker2 = new Invoker(new ClassB()); 46 AbstractClass ac2 = (AbstractClass) Proxy.newProxyInstance(AbstractClass.class.getClassLoader(), new Class[] {AbstractClass.class}, invoker2); 47 ac2.show(); 48 } 49 }
我喜欢一无所有,这样就只能一步一步的创造世界...