2

我有一个名为的静态实用程序方法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;
}

该方法适用于其他对象,但当我想制作一个Setof时会产生编译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<?>>

我在这里做错了吗?我怎样才能在没有铸造的情况下实现这一目标?

提前致谢。

4

2 回答 2

4

在这种情况下,类型推断似乎失效了,因为其他人可以解释的原因。不需要强制转换 - 只需明确指定类型参数:

Set<Class<?>> entities = MyClass.<Class<?>>toSet(test);
于 2012-07-18T03:12:57.513 回答
0

也试试这种方式:

 Class<String> test = String.class;
 Set<Class<String>> entities = toSet(test);
于 2012-09-14T05:11:55.277 回答