动态代理
Posted snailsrunning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态代理相关的知识,希望对你有一定的参考价值。
示例代码
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();
}
}
运行结果
以上是关于动态代理的主要内容,如果未能解决你的问题,请参考以下文章