gpt4 book ai didi

java - 参数化原始类型

转载 作者:行者123 更新时间:2023-12-02 11:28:49 26 4
gpt4 key购买 nike

我有一个Vector像这样:

Vector myVector = new Vector();

还有一个ArrayList包含 n 的自定义类的金额String s。

基本上,我将一个空项目添加到 vector ( myVector.insertElementAt("", 0); ) 中的第一个位置,然后添加(通常) ArrayList 中的其余项目。 (取决于需要)。这个Vector然后用作DefaultComboBoxModel对于JComboBox .

现在,我收到了常见的警告对泛型类型 Vector 的引用应该参数化

这些项目的类型为 String ,但我不能使用Vector<String>因为添加 ArrayList 中的项目(使用 .add() )将不起作用:

Vector(String) 类型中的 add(String) 方法不适用于参数 (CustomClass)。

我无法使用 Vector(CustomClass)因为那时insertElementAt抛出一个摇晃器。

所以我的问题是:仅使用 Vector(Object) 是否安全?或者根本不参数化类型?

我可以使用T并强制转换所有内容,但会出现类型安全错误。

最佳答案

I can't use Vector because adding the items from the ArrayList (using .add()) won't work as:

The method add(String) in the type Vector(String) is not applicable for the arguments (CustomClass).

所以,您正在尝试从 ArrayList<CustomClass> 添加内容到 Vector您期望仅包含 String元素。

如果您使用的是原始类型 Vector ,您可以执行此操作,但如果您尝试对 Vector 中的元素执行任何操作,则会失败。您将其视为 String ,因为它不是。

如果你想要Vector包含String s,添加 String :

myVector.add(thingFromArrayList.toString());

(或将 thingFromArrayList 转换为 String 的其他方法)

然后您可以添加 <String>myVector的类型。

关于java - 参数化原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com