簡體   English   中英

Guice Generic Provider(Provider本身是通用的,而不是它綁定的類)

[英]Guice Generic Provider (the Provider itself is generic, not the class it's binding to)

有很多關於如何使用Guice Provider綁定到泛型類的在線資源,例如像這樣的wiki條目和這樣的 SOF問題 但是,我無法找到有關如何使用通用本身的提供程序的資源。

例如,假設我有以下內容:

public interface Foo {
    ...
}

public class Bar implements Foo {
    ...
}

如您所見,Bar有一個注入參數,必須在構造函數中。 在我的情況下,我們無法將此參數移動到字段或方法注入。

所以,現在我想為Foo編寫一個Provider,但它返回一個Bar實例。 像這樣的東西:

@Singleton
public class FooProvider<T extends Foo> extends Provider<Foo> {
    @Inject
    public FooProvider(Object someParameterWeMustInjectIntoConstructor) {
        ...
    }
    ...
    @Override
    public Foo get() {
        return new Bar(...);
    }
    ...
}

注意這個類是如何依賴於Guice注入本身的單例,因此必須使用.toProvider(FooProvider.class)配置Provider。 我們也只能使用構造函數注入而不是方法和字段注入,可能是因為具有此Provider的類型層次結構。

我試圖找到一些使用.toProvider(FooProvider<Bar>.class) ,但我們都知道這不是有效的Java語法。 有誰知道如何在模塊中使用Guice活頁夾的.toProvider(Class<? extends Provider>)方法,這樣我就可以使用通用的Provider來創建一個具體的實現類? 如果我的問題有點令人困惑,請告訴我。

toProvider(new TypeLiteral<FooProvider<Bar>>() { });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM