标签:main throw 实现 http .com rgs obj print dynamic
package day19;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* 动态代理;
*
* @author Lynn
*
*/
interface Subject {
public void show();
}
class RealSubject implements Subject {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("调用的是被代理类的方法!");
}
}
/**
*
* MyInvocationHandler完成代理类和被代理类之间的方法调用的转换。
*
*/
class MyInvocationHandler implements InvocationHandler {
private Object obj;
public Object getProxyObj(Object obj) {
this.obj = obj;
// 生成代理类,代理类和被代理类使用相同的类加载器,实现相同的接口;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
return method.invoke(obj, args);
}
}
public class DynamicProxy {
public static void main(String[] args) {
RealSubject realsubject = new RealSubject();
MyInvocationHandler myInvocationHandler = new MyInvocationHandler();
//代理对象;
Subject proxy = (Subject) myInvocationHandler.getProxyObj(realsubject);
proxy.show();
}
}
标签:main throw 实现 http .com rgs obj print dynamic
原文地址:https://www.cnblogs.com/SnailsRunning/p/10256673.html