1.一个普通的接口 public interface Animal { void voice(String msg); void lifetime(String msg,int time); }
2.一个实现接口的实体类
public class Cat implements Animal { public void voice(String msg) { System.out.println(msg+"的叫声:miao~"); } public void lifetime(String msg,int time) { System.out.println(msg+"的寿命为:"+time); } }
3.动态代理类
public class AnimalProxy implements InvocationHandler{ private Object obj; public void setObj(Object obj) { this.obj = obj; } public Object getAnimalProxy(){ return (Object)Proxy.newProxyInstance(this.getClass().getClassLoader(),obj.getClass().getInterfaces(),this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { method.invoke(obj,args); return null; } }
4.代理类代理实体类
@org.junit.Test public void test2(){ Cat cat = new Cat(); AnimalProxy ap = new AnimalProxy(); ap.setObj(cat); Animal animalProxy = (Animal)ap.getAnimalProxy(); animalProxy.lifetime("小花",100); }