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);
}
本文介绍了一个简单的Java动态代理示例,定义了一个Animal接口及其实现类Cat,并通过动态代理类AnimalProxy实现了对接口方法的调用。
1758

被折叠的 条评论
为什么被折叠?



