JCombobox - 在参数化时添加2d String-array没有成功

use*_*478 0 java generics swing jcombobox

如果我实例化Swing的JCombobox类并将String [] [] - 项添加到它 - 除了我收到以下警告之外没有问题:

JComboBox是原始类型.应该对泛型类型JComboBox的引用进行参数化.

好吧 - 我以下面的方式参数化对象

private JComboBox <String[][]> myComboBox = new JComboBox <String[][]> ();
Run Code Online (Sandbox Code Playgroud)

它起初看起来很好,因为警告消失了,但是当我想要从String [] [] - 对象添加项时我收到错误

 myComboBox.addItem(this.stringList[i][1]);
Run Code Online (Sandbox Code Playgroud)

错误信息:

 *the method addItem(String[][]) in the type JComboBox <String[][]> is not applicable for the arguments (String).*
Run Code Online (Sandbox Code Playgroud)

我做错了什么,如何解决?

顺便说一句 - 如果你有时间回答更多 - 使用rawtypes有危险/缺点吗?

i_t*_*uro 6

好吧,当你使用参数化JComboBox<String[][]>,该方法addItem()需要String[][]一个参数:

public void addItem(String[][] item) { // method signature when <String[][]>
Run Code Online (Sandbox Code Playgroud)

在你的例子中,你试图传递一个法线String,这显然是不允许的,因为它不是一个String[][].

要解决此问题,只需使用以下参数进行参数化String:

private JComboBox<String> myComboBox = new JComboBox<>();
Run Code Online (Sandbox Code Playgroud)

有关rawtypes的更多信息,请参阅该问题的惊人详细解答:
什么是原始类型,为什么我们不应该使用它?