Java代理实现:动态代理与代码示例
在Java中,可以使用动态代理和静态代理来实现代理。以下是动态代理的示例代码:
创建一个接口:
public interface Animal {
void eat();
}
创建一个实现类:
public class Dog implements Animal {
@Override
public void eat() {
System.out.println('Dog is eating.');
}
}
创建一个代理类:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class AnimalProxy implements InvocationHandler {
private Object target;
public Object bind(Object target) {
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println('Before method.');
Object result = method.invoke(target, args);
System.out.println('After method.');
return result;
}
}
在主函数中使用代理类:
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
AnimalProxy proxy = new AnimalProxy();
Animal animal = (Animal) proxy.bind(dog);
animal.eat();
}
}
运行结果:
Before method.
Dog is eating.
After method.
可以看到,代理类在调用实现类的方法前后添加了额外的逻辑。
原文地址: https://www.cveoy.top/t/topic/oUIj 著作权归作者所有。请勿转载和采集!