【发布时间】:2016-07-15 10:24:12
【问题描述】:
我有以下层次结构:
~interface Car
~ abstract class SportsCar
~ class Ferrari
我使用 FerrariFactory 创建了一个 Ferrari 类的实例(模块中的代码如下所示):
install(new FactoryModuleBuilder().build(FerrariFactory.class));
FerrariFactory 接口有以下方法,我使用辅助注射来注射零件(这是包含所有零件的 xml 元素,即法拉利特定零件 + 跑车零件):
Ferrari create(@Assisted Element partsElement);
当我创建一个 Ferrari 实例时,我正在使用以下内容:
ferrariFactory.create(partsElement);
首先调用 Ferrari 构造函数:
@Inject
public Ferrari(Element parts) {
super(parts);
this.ferrariRadio= getElementValue(parts, "Parts/FerrariParts/ferrariRadio");
}
因为第一行是对 SportsCar 的超类构造函数的调用:
public SportsCar (Element parts) {
super();
System.out.println("SportsCarconstructor: 1");
System.out.println("SportsCarconstructor: 2 "+parts);
...
... // where I set the basic parts from the parts xml element
}
由于 SportsCar 是抽象的,我在 guice 模块中没有绑定。我不确定如何绑定它。此外,即使我没有通过 null 访问任何内容(空指针的奇怪情况),我在 SportsCar 构造函数的第二个 sysout 行也得到了 NullPointerException。
关于它是否是绑定问题或为什么我的抽象类构造函数无法设置部分的任何建议?
【问题讨论】: