Java动态代理原理及应用示例
Java动态代理是一种在运行时生成对象的机制,它主要用于实现接口代理、行为拦截等功能。以下是动态代理的原理和一个简单的示例。
原理:
- 使用
Proxy
类创建一个代理对象。 - 接口实现:将要被代理的方法都实现在目标类中。
- 动态调用:通过代理对象进行方法调用,最终会调用到目标类中的对应方法。
示例:
// 定义接口
interface MyInterface {
void method();
}
// 实现接口的非代理类
class NonProxyClass implements MyInterface {
@Override
public void method() {
System.out.println("Method called in NonProxyClass");
}
}
// 创建代理对象
MyInterface proxy = (MyInterface) Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class[]{MyInterface.class}, // 接口
new MyInterface() { // 目标实现
@Override
public void method() {
System.out.println("Original Method called in NonProxyClass");
}
}
);
// 调用代理对象的方法
proxy.method();
在上述示例中,我们首先定义了一个接口MyInterface
和一个非代理类NonProxyClass
,其中实现了接口的method()
方法。
然后通过Proxy.newProxyInstance()
方法创建了一个动态代理对象。这里传入了三个参数:1)类加载器,使用当前线程上下文类加载器;2)接口类列表,我们只有一个接口MyInterface
;3)实现接口的目标类,我们为这个目标类实现了接口的方法。
最后通过代理对象调用method()
方法,可以看到原始的method()
方法被调用了。
还没有评论,来说两句吧...