小编sta*_*max的帖子

Java indexOf 不调用等于

我想了解为什么 indexOf 函数不调用覆盖方法 equals 。我有这门课:

class Test {
    public Integer _test;

    public Test(Integer test) {
        _test= test;
    }

    @Override
    public int hashCode() {
        return Objects.hash(_test);
    }

    @Override
    public boolean equals(Object obj) {
        System.out.println("equals function called");
        if (!(obj instanceof Integer)) return super.equals(obj);
        Integer test = (Integer) obj;
        return _test == test;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的主要代码:


List<Test> listTest = new Arraylist<Test>();

listTest.add(new Test(1));

System.out.println(listTest.indexOf(new Integer(1)));

Run Code Online (Sandbox Code Playgroud)

输出:-1


请注意,如果我这样做,则调用 equals 函数:

List<Test> listTest = new Arraylist<Test>();

listTest.add(new Test(1));

System.out.println(listTest.indexOf(new Test(1)));
Run Code Online (Sandbox Code Playgroud)

输出:-1 等于调用的函数

java overriding equals indexof

0
推荐指数
1
解决办法
62
查看次数

标签 统计

equals ×1

indexof ×1

java ×1

overriding ×1