我有一個有兩個構造函數的類。我正在嘗試使用guice factory來創建這個類的實例。如果沒有參數傳遞,那麼應該調用默認的構造函數。如果傳遞了一個參數,那麼應該調用帶有參數的構造函數。但是,即使我將參數傳遞給工廠方法,仍然默認構造函數被調用。帶參數的構造函數根本不會被調用。以下是我的工廠班。Guice輔助注入與多個構造函數總是調用默認構造函數
public interface MapperFactory {
PigBagMapper createPigBagMapper(@Assisted("pigMetaInfoList") List<String> sourceMetaInfoList);
JsonMapper createJsonMapper(@Assisted("apiName") String apiName) throws EndpointNotFoundException, JsonMapperException;
JsonMapper createJsonMapper();
}
下面是我想要注入的構造函數。
@AssistedInject
public JsonMapper() {
handlers = new LinkedList<>();
}
@AssistedInject
public JsonMapper(@Assisted("apiName") String apiName) throws EndpointNotFoundException, JsonMapperException {
somelogic();
}
下面是我在抽象模塊實現類中的模塊綁定。
install(new FactoryModuleBuilder()
.implement(PigBagMapper.class, PigBagMapperImpl.class)
.implement(JsonMapper.class, JsonMapperImpl.class)
.build(MapperFactory.class));
以下是我如何調用構造函數。
mapperFactory.createJsonMapper(apiName);
我在做什麼錯在這裏?任何幫助將非常感激。
編輯:
請注意,JsonMapperImpl類沒有構造函數。它只是有一個公共的方法,就這些。