我有Vector
这样:
Vector myVector = new Vector();
自定义类的ArrayList
,其中包含n
个String
秒。
基本上,我将一个空项添加到Vector中的第一个位置(myVector.insertElementAt("", 0);
),然后添加(通常)来自ArrayList
的其余项目(取决于需要)。然后,此Vector
用作DefaultComboBoxModel
的{{1}}。
现在,我得到通常的警告引用类型Vector的引用应该参数化。
这些项目属于JComboBox
类型,但我无法使用String
,因为添加Vector<String>
中的项目(使用ArrayList
)将无效:
类型为Vector(String)的方法add(String)不适用于参数(CustomClass)。
我无法使用.add()
,因为Vector(CustomClass)
会引发摇摆不定。
所以我的问题是:使用insertElementAt
或根本不参数化类型是否安全?
我可以使用Vector(Object)
并投射所有内容但会出现类型安全错误。
答案 0 :(得分:1)
我不能使用Vector,因为从ArrayList添加项目(使用.add())将不起作用:
Vector(String)类型中的方法add(String)不适用于参数(CustomClass)。
因此,您正尝试将ArrayList<CustomClass>
中的内容添加到您希望仅包含Vector
元素的String
。
如果您使用的是原始类型Vector
,则可以执行此操作,但如果您尝试对Vector
中被视为“{1}}的元素执行任何操作,则会失败。 String
,因为它不是。
如果您希望Vector
包含String
,请添加String
:
myVector.add(thingFromArrayList.toString());
(或其他一些将thingFromArrayList
转换为String
)
然后您可以将<String>
添加到myVector
的类型。