Java AOP?适配器?反思?如何泛化setter方法(不抽象目标对象)

Java AOP?适配器?反思?如何泛化setter方法(不抽象目标对象),java,Java,我想为任何可以使用setBar或setFoo的对象创建一个通用setter。这些类位于库中,因此我无法调整这些类中任何一个从父类型继承的源 约束:我使用的是第三方库,这使得我无法为这些对象提供一个父类进行扩展 e、 g: 我试图确定以下几点: 是否有任何方法可以使用AOP或反射来创建适配器设计模式,以绕过约束并限制处理每个对象的setter所需的代码量 我可以采取哪些步骤来创建一个方法,该方法将覆盖这些对象的设置器(如果调用)您可以使用这些对象来实现一个公共接口: interface Commo

我想为任何可以使用setBar或setFoo的对象创建一个通用setter。这些类位于库中,因此我无法调整这些类中任何一个从父类型继承的源

约束:我使用的是第三方库,这使得我无法为这些对象提供一个父类进行扩展

e、 g:

我试图确定以下几点:

是否有任何方法可以使用AOP或反射来创建适配器设计模式,以绕过约束并限制处理每个对象的setter所需的代码量

我可以采取哪些步骤来创建一个方法,该方法将覆盖这些对象的设置器(如果调用)

您可以使用这些对象来实现一个公共接口:

interface CommonInterface {
    void setBar(String str);
    void setFoo(String str);
}

class Object1Adapter implements CommonInterface {
    private final Object1 obj;

    public Object1Adapter(Object1 obj) {
        this.obj = obj;
    }

    @Override
    public void setBar(String str) {
        obj.setBar(str);
    }
    ...
}

class Object2Adapter implements CommonInterface {...}
class Object3Adapter implements CommonInterface {...}
然后,您可以将适配器存储在
CommonInterface
类型下


如果要使用1漏斗方法调用
CommonInterface
中的setter,可以这样做(您仍然需要适配器类):

然后您可以像这样使用它:

CommonInterface obj = new Object1Adapter(new Object1());
obj.set(CommonInterface.Setter.Bar, "Hello"); // Uses 'setBar'

我很困惑。你真正的目标是什么?您想要一个接受三个参数(每个setter一个)的方法吗?你说的单一方法是什么意思?你真的想在你马上扔掉的对象上调用setter吗?你能举个例子说明你的单一方法是如何被调用的,以及它会做什么吗?例如,是否要对属于object1、object2或Object3类的任何对象调用SetSetSetter2(..)?如果不是这样,它应该怎么做?我的问题是。目标是制造一个共同的挫折和挫折。请记住,我不能给它一个接口来实现。
interface CommonInterface {
    enum Setter {
        Bar,
        Foo;
    }

    void setBar(String str);
    void setFoo(String str);

    default void set(Setter set, String value) {
        switch(set) {
        case Bar:
            setBar(value);
            break;
        case Foo:
            setFoo(value);
            break;
        default: // Do nothing
        }
    }
}
CommonInterface obj = new Object1Adapter(new Object1());
obj.set(CommonInterface.Setter.Bar, "Hello"); // Uses 'setBar'