ArrayList<String> 类型中的方法 add(String) 不适用于参数 (Object)

The method add(String) in the type ArrayList<String> is not applicable for the arguments (Object)

我正在运行宁以下代码:

    public ArrayList<String> equipAvail;
        {
        equButton2 = new JButton();
        equButton2.setText("Apply");
        equButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                //read the contents of equlist2 
                for(int i=0;i<equList2.getModel().getSize();i++){
                    //fill equipAvail ArrayList with the contents of equlist2 
                    //System.out.println(equList2.getModel().getElementAt(i));
                    //System.out.println(equList2.getModel().getElementAt(i) instanceof String);
                    equipAvail.add(equList2.getModel().getElementAt(i));
                    //pass equipAvail to the user's EquipmentAvailable property
                    user.setEquipmentAvailable(equipAvail);
                }
            }
        });
    }

如果我注释掉行 equipAvail.add(equList2.getModel().getElementAt(i));,并且 运行 当前注释掉的行 //System.out.println(equList2.getModel().getElementAt(i));,它会将选择打印到控制台。 如果我 运行 行 //System.out.println(equList2.getModel().getElementAt(i) instanceof String);,它报告填充到 equList2 中的对象数量为真。

然而不知何故,当我尝试 运行 如图所示时,它甚至无法编译。给出错误 "The method add(String) in the type ArrayList is not applicable for the arguments (Object)"。如果我在 equipAvail 行的末尾使用 .toString(),它会编译,但当我在我的 GUI 中单击按钮时,它会给我同样的错误。

我需要 equipAvail 成为一个 ArrayList 并填充出现在 equList2.

中的所有字符串

为什么我不能使用 equilAvail.add 将这些我知道是字符串的对象添加到 ArrayList 中?

如何使用 equList2 中的条目填充 equipAvail?

谢谢!!

对于上下文,注意 equList2 是这样开始它的生命的可能会有所帮助:

    private JList getEquList2() {
    if(equList2 == null) {
        ListModel equList2Model = 
            new DefaultComboBoxModel(
                    new String[] {""});
        equList2 = new JList();
        equList2.setModel(equList2Model);
        equList2.setVisibleRowCount(4);
    }
    return equList2;
}

但随后使用绑定到 'Move' 按钮的 equList2.setListData(equList1.getSelectedValues()); 命令进行更新以包含一些其他数据,该按钮将 equList1 条目的子集移动到 equList2。

ListModel 是泛型,但您将其用作原始类型。

也许ListModel<String> = new DefaultComboxBoxModel<String>(new String[] {""})