字符串等于不在Object上

时间:2015-10-01 17:36:02

标签: java arrays string object netbeans

    Object[] abc = { "products" };
    methodName(model2, abc);

我初始化了一个对象并调用了方法:

public int methodName(TableModel model, Object value) {
    for (int i = model.getRowCount()-1; i >= 0; --i) {
    int j = 0; //first column I need

        System.out.println("a "+model.getValueAt(i, j)); //a products
        //this case RowCount was 1 (tested with println) which also means for loop is only once executed

        if (model.getValueAt(i, j).equals(value)) {
            return i;
        }
    }

return -1;
}

它总是返回-1,尽管它应该返回i(0)

为什么.equals无法正常工作

2 个答案:

答案 0 :(得分:1)

您将数组作为第二个参数传递给methodName,然后检查该数组是equalsmodel.getValueAt(i, j)。无论model.getValueAt(i, j)返回什么,它都不能equals到该数组,因为数组使用equals的默认实现(来自Object类)来比较对象引用

答案 1 :(得分:0)

所以也许试试这个:

Object    abc = { "products" };

不要将abc作为数组。

但如果它必须是大图中的数组,则将[...]放在方法中的每个value引用上。例如,value[0]