pet*_*ina 17 java generics guice
我试图用Guice注入泛型类型.我有Repository <T>,它位于Cursor类中.
public class Cursor<T> {
@Inject
protected Repository<T> repository;
Run Code Online (Sandbox Code Playgroud)
所以当我创建Cursor <User>时,我也希望Guice将我的存储库注入Repository <User>.有没有办法做到这一点?
gon*_*ard 21
你必须使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
要获取实例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);
}
}
Run Code Online (Sandbox Code Playgroud)
常见问题中的更多细节.
| 归档时间: |
|
| 查看次数: |
13298 次 |
| 最近记录: |