2 つのコンストラクターを持つクラスがあります。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 クラスにはコンストラクターがないことに注意してください。public メソッドがあるだけで、それだけです。