0

在我的一个项目中,我使用 Guice 进行依赖注入。我的模型中的一个类使用 GuiceAssistedInject注入某种实现某个接口的管理器:

public final class A_Class {
    private final String string;
    private final ManagerInterface interface;

    @Inject
    public A_Class(@Assisted String string, ManagerInterface interface) {
        ...
    }

    // getters, equals, hashCode, toString, etc.
}

当然,我有这些工厂接口之一,以便A_Class通过只给出一个来创建一个实例String

public interface A_Factory {

    A_Class create(String s);
}

该项目的后续步骤之一是将 的实例存储A_Class为 XML 并通过读取 XML 文件来创建实例。对于那部分,我想使用 JAXB 库。正如(以及其他)这个线程中所讨论的,您不能A_Class在 XML 进程中使用,因为它没有空的构造函数。我刚才提到的线程中讨论了我对此所做的事情。我做了以下课程:

public class A_Class_Adaptee {

    private String s;

    @XmlElement
    public String getS() {
        return this.s;
    }

    public void setS(String s) {
        this.s = s;
    }
}

以及 JAXB 的一个子类XmlAdapter,称为A_Class_Adapter. 现在问题来了:为了实现它的unmarshal()-method,我需要访问创建A_Class. 但是由于A_Class_Adapter不能有一个带参数的构造函数,我不能注入那个工厂接口。需要明确的是,我基本上想要的是这样的:

public class A_Class_Adapter extends XmlAdapter<A_Class_Adaptee, A_Class> {

    @Override
    public A_Class unmarshal(A_Class_Adaptee adaptee) {
        return factory.create(adaptee.getS());
    }

    @Override
    public A_Class_Adaptee marshal(A_Class aClass) {
        A_Class_Adaptee adaptee = new A_Class_Adaptee();
        adaptee.setS(aClass.getS());
        return adaptee;
    }
}

但我不知道如何注入factory由 Guice 创建的 -interface。

有没有人可以解决这个问题?还是我想错了方向,还有其他方法可以实现阅读 XML 的目标吗?谢谢!

4

0 回答 0