gpt4 book ai didi

java - Guice 注入(inject)通用类型

转载 作者:太空狗 更新时间:2023-10-29 22:45:56 26 4
gpt4 key购买 nike

我正在尝试使用 Guice 注入(inject)通用类型。我有位于 Cursor 类中的 Repository< T >。

public class Cursor<T> {

@Inject
protected Repository<T> repository;

所以当我创建 Cursor 时,我还希望 Guice 将我的存储库注入(inject)到 Repository 。有办法做到这一点吗?

最佳答案

你必须使用 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);
}
}

更多详情 in the FAQ .

关于java - Guice 注入(inject)通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24657127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com