Guice TypeLiterals允许您表示具有特定类型参数的泛型类型,如List<String>
,并在绑定表达式中使用它。假设在编译时不是知道列表的类型参数,而是在运行时有一个类型的Class对象(在本例中为String.class)。有没有办法绑定这种类型的列表?
例如,请考虑以下方法:
public void bindListOfClass(Class<?> clazz, List<?> list) {
bind(????).to(list);
}
可以在该绑定调用中使用什么({1}}等同于bindListOfClass(String.class, list)
?
答案 0 :(得分:4)
我使用以下帮助方法:
import com.google.inject.util.Types;
@SuppressWarnings("unchecked")
public static <T> TypeLiteral<List<T>> listOf(Class<T> type) {
return (TypeLiteral<List<T>>)TypeLiteral.get(Types.listOf(type));
}