在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.

可以看到,代理类在调用实现类的方法前后添加了额外的逻辑。

Java代理实现:动态代理与代码示例

原文地址: https://www.cveoy.top/t/topic/oUIj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录