//实现接口的被代理类
public class Person implements Strong{
@Override
public String beStrong() {
return "YOU Can be the Strong";
}
@Override
public void moreStrong(String s) {
System.out.println("get me more time"+s);
}
}
//这是一个代理类
public class proxyTest {
//创建代理类对象 传入一个被代理类 返回代理类对象
public static Object getProxyClass(Object obj){
//创建实现InvocationHandler接口的实现类对象
MyInvocationHandler myInvocationHandler = new MyInvocationHandler();
//调用MyInvocationHandler的获取被代理类的方法
//传入被代理类对象
myInvocationHandler.getProxy(obj);
//调用Proxy类的静态方法 创建代理类的对象 传入被代理类的加载器 传入被代理类的所有实现接口 传入InvocationHandler实现类对象
return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),myInvocationHandler);
}
}
//测试类
public class Test {
public static void main(String[] args) {
//创建被代理类对象
Person p=new Person();
//创建代理类对象
//调用代理类的静态方法传入被代理类对象 返回代理类对象
Strong proxyClass =(Strong) proxyTest.getProxyClass(p);
//通过代理类对象调用被代理类同名方法
String s=proxyClass.beStrong();
System.out.println(s);
proxyClass.moreStrong(" yes");
}
}
//运行结果为
//YOU Can be the Strong
//get me more time yes