【问题标题】:Guice: Given Class<T>, how to get a Key for List<T>?Guice:给定 Class<T>,如何获取 List<T> 的 Key?
【发布时间】:2017-03-07 19:55:14
【问题描述】:

Guice TypeLiterals 允许您表示具有特定类型参数的泛型类型,例如List&lt;String&gt;,并在绑定表达式中使用它。假设您在编译时不知道列表的类型参数,而是在运行时拥有该类型的 Class 对象(在本例中为 String.class)。有没有办法绑定这种类型的列表?

例如,考虑以下方法:

public void bindListOfClass(Class<?> clazz, List<?> list) {
    bind(????).to(list);
}

在绑定调用中可以使用什么(如果有的话)使bindListOfClass(String.class, list) 等效于bind(new TypeLiteral&lt;List&lt;String&gt;&gt;(){}).to(list)

【问题讨论】:

    标签: generics guice typeliteral


    【解决方案1】:

    我使用以下辅助方法:

    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));
    }
    

    更多:https://github.com/tavianator/sangria/blob/master/sangria-core/src/main/java/com/tavianator/sangria/core/TypeLiterals.java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多