[英]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.