簡體   English   中英

Guice注入通用類型

[英]Guice injecting Generic type

我試圖用Guice注入泛型類型。 我有Repository <T>,它位於Cursor類中。

public class Cursor<T> {

    @Inject
    protected Repository<T> repository;

所以當我創建Cursor <User>時,我也希望Guice將我的存儲庫注入Repository <User>。 有沒有辦法做到這一點?

您必須使用TypeLiteral

import com.google.inject.AbstractModule;
import com.google.inject.TypeLiteral;

public class MyModule extends AbstractModule {

  @Override
  protected void configure() {
    bind(new TypeLiteral<Repository<User>>() {}).to(UserRepository.class);
  }
}

要獲取Cursor<T>的實例,需要一個Injector

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.TypeLiteral;

public class Main {

  public static void main(String[] args) {
    Injector injector = Guice.createInjector(new MyModule());
    Cursor<User> instance = 
        injector.getInstance(Key.get(new TypeLiteral<Cursor<User>>() {}));
    System.err.println(instance.repository);
  }
}

常見問題中的更多細節。

暫無
暫無

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

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