无法推断类<! - ? - >的类型

时间:2012-07-18 02:33:11

标签: java generics

我有一个名为toSet()的静态实用程序方法,它接收对象并返回Set

public static <T> Set<T> toSet(T item, T... otherItems) {
    Set<T> items = new HashSet<T>();
    items.add(item);
    items.addAll(Arrays.asList(otherItems));
    return items;
}

该方法适用于其他对象但在我想Set Class<?>时会产生编译。

Set<String> strings = toSet("OK", "This works well", "No problem");
Set<Integer> numbers = toSet(1, 2, 3, 4, 5);

    Class<?> test = String.class;
    Set<Class<?>> entities = toSet(test);

将产生Type mismatch: cannot convert from Set<Class<capture#5-of ?>> to Set<Class<?>>

我在这里做错了吗?如何在不进行铸造的情况下实现这一目标?

先谢谢。

2 个答案:

答案 0 :(得分:4)

在这种情况下看起来类型推断会被打破,原因是其他人可以解释。不需要强制转换 - 只需明确指定类型参数:

Set<Class<?>> entities = MyClass.<Class<?>>toSet(test);

答案 1 :(得分:0)

也尝试这种方式:

 Class<String> test = String.class;
 Set<Class<String>> entities = toSet(test);