在`equals(T value)`中,T必须是Object,还是像City等?

Amy*_*y B 2 java equals referenceequals

我想要equals()更好地理解这个方法.我见过的所有例子都是这样的:

public class City
{
    public boolean equals(Object other)
    {
        if (other instanceof City && other.getId().equals(this.id))
        {
            return true;
        }

        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法必须采用对象而不是城市吗?

例如下面不允许这个?

public class City
{
    public boolean equals(City other)
    {
        if (other == null)
        {
            return false;
        }

        return this.id.equals(other.getId());
    }
}
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 6

是的,它必须是一个Object.否则你没有覆盖现实 Object#equals(),而是超载了.

如果您只是重载它,那么它将不会被标准API(如Collection API等)使用.

相关问题:

  • 并使用`@Override`确保您没有犯错. (3认同)