Guice Multibindings:从 Injector 手动获取 Set<T>

Guice Multibindings: Manually obtain a Set<T> from Injector

使用 guice Multibindings 扩展可以注入特定类型的集合而不是该类型的单个实例。我如何使用 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