Java:无法修复未经检查的转换需要java.util.Collection <! - ?扩展java.lang.String - >

时间:2013-08-16 11:13:50

标签: java generics vector linkedhashset

我有一个字符串向量, oldV ,并希望第二个Vector相同但删除了所有重复项。以下工作,从它编译并导致删除了重复项的Vector:

Vector<String> newV = new Vector<String>( new LinkedHashSet(oldV) );

但是,它会生成两个未经检查的转换警告:

> warning: [unchecked] unchecked call to LinkedHashSet(java.util.Collection<? extends E>) as a member of the raw type java.util.LinkedHashSet

> warning: [unchecked] unchecked conversion
> found   : java.util.LinkedHashSet
> required: java.util.Collection<? extends java.lang.String>

在这两种情况下,^都直接位于“new LinkedHashSet。

中的”new“下

我不知道如何修复这些警告。

1 个答案:

答案 0 :(得分:3)

如果oldV被声明为Vector<String>,请使用参数化版本的“LinkedHashSet”:

Vector<String> newV = new Vector<String>( new LinkedHashSet<String>(oldV) )

如果您只是想摆脱警告,也可以使用注释@SuppressWarnings

@SuppressWarnings("unchecked")
Vector<String> newV = new Vector<String>( new LinkedHashSet(oldV) );