在我的一个项目中,我使用 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 的目标吗?谢谢!