1

ここで提案されているように、PlaceHistoryMapperWithFactory を試しました。したがって、私の AppPlaceHistoryMapper は次のようになります。

    @WithTokenizers({ InfoPlace.Tokenizer.class, LogPlace.Tokenizer.class })
public interface AppPlaceHistoryMapper extends PlaceHistoryMapperWithFactory<TokenizerFactory> {

}

私はジンモジュールも変更しました:

bind(PlaceHistoryMapperWithFactory.class).to(AppPlaceHistoryMapper.class);

しかし、gwt コンパイルはしません。私は得る

[INFO] Compiling module de.stalabw.zensus2011.adb.AuswertungsDB
[INFO]    Scanning for additional dependencies: ...ClientInjectorImpl.java
[INFO]       Adding '57' new generated units
[INFO]          Validating newly compiled units
[INFO]             Ignored 1 unit with compilation errors in first pass.
[INFO] Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
[INFO]    [ERROR] Errors in '...PlaceHistoryMapperWithFactoryImpl.java'
[INFO]       [ERROR] Line 10:  The interface PlaceHistoryMapperWithFactory cannot be implemented more than once with different arguments: PlaceHistory
MapperWithFactory<Void> and PlaceHistoryMapperWithFactory
[INFO]    [ERROR] Cannot proceed due to previous errors

単体テストで同じエラーを修正しました。そこにモック実装があります。私はちょうど変わった

public class PlaceHistoryMapperMock extends AbstractPlaceHistoryMapper<void> implements
AppPlaceHistoryMapper

public class PlaceHistoryMapperMock extends AbstractPlaceHistoryMapper<TokenizerFactory> implements
AppPlaceHistoryMapper

そしてエラーはなくなりました。しかし、「実際の」コードでそれを修正するにはどうすればよいですか?

4

2 に答える 2

0

はい、分かりました。問題は

bind(PlaceHistoryMapperWithFactory.class).to(AppPlaceHistoryMapper.class);

PlaceHistoryMapperWithFactory.class がないため、これは間違った実装をバインドします。私のソリューションはプロバイダーです:

@Provides
@Singleton
public final PlaceHistoryMapperWithFactory<TokenizerFactory> getPlaceHistoryMapper(AppPlaceHistoryMapper hm) {
    return hm;
}

それはうまくいくようです。

于 2012-05-10T14:18:04.840 に答える