私は2つのコンストラクタを持つクラスを持っています。私はこのクラスのインスタンスをguiceファクトリを使用して作成しようとしています。パラメータが渡されない場合は、デフォルトのコンストラクタを呼び出す必要があります。パラメータが渡された場合は、パラメータ付きのコンストラクタを呼び出す必要があります。しかし、現時点では、ファクトリメソッドにパラメータを渡しても、依然としてデフォルトコンストラクタが呼び出されています。パラメータを持つコンストラクタはまったく呼び出されません。以下は私の工場のクラスです。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);
私はここで間違っていますか?どんな助けでも大歓迎です。
EDIT:
JsonMapperImplクラスにはコンストラクタがありませんのでご注意ください。それは公の方法だけであり、それだけです。