gpt4 book ai didi

java - Guice 多重绑定(bind) : Manually obtain a Set from Injector

转载 作者:行者123 更新时间:2023-11-30 07:01:39 26 4
gpt4 key购买 nike

使用 guice Multibindings 扩展可以注入(inject)特定类型的集合而不是该类型的单个实例。我如何使用 Injector.getInstance(...) 从 Injector 手动获取此 Set?到目前为止,我的尝试导致了带有消息的 ConfigurationException:

java.util.Set<T> cannot be used as a key; It is not fully specified.

public final <T> Iterator<T> loadServices(Class<T> type) {
final TypeLiteral<Set<T>> lit = new TypeLiteral<Set<T>>() {};
final Key<Set<T>> key = Key.get(lit);
final Set<T> bindings = this.injector.getInstance(key);
return bindings.iterator();
}

最佳答案

我使用这个片段创建了一个 TypeLiteral<Set<T>> :

import com.google.inject.util.Types;

@SuppressWarnings("unchecked")
public static <T> TypeLiteral<Set<T>> setOf(Class<T> type) {
return (TypeLiteral<Set<T>>)TypeLiteral.get(Types.setOf(type));
}

我这里还有其他一些类似的便利:https://github.com/tavianator/sangria/blob/master/sangria-core/src/main/java/com/tavianator/sangria/core/TypeLiterals.java

关于java - Guice 多重绑定(bind) : Manually obtain a Set<T> from Injector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728335/

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