覆盖 ArraySet 中的 equals 函数

Overriding equals funct in ArraySet

如何在没有得到

的情况下实现这一点

error: cannot inherit from final ArraySet

ArraySet<MyObject>objectList = new ArraySet<MyObject>(){
    @Override
    public boolean equals(Object object) {
        return ((MyObject)this).getId()==((MyObject)object ).getId();
    }
};

ArraySet 是一个最终的 class,这意味着您不能继承它。当您编写

时,您正试图创建一个匿名子 class
ArraySet<MyObject>objectList = new ArraySet<MyObject>(){
    @Override
    public boolean equals(Object object) {
        return ((MyObject)this).getId()==((MyObject)object ).getId();
    }
};

您真正想要做的是为 MyObject 实施 equals(和 hashcode):

public class MyObject {
    ...
    @Override
    public boolean equals(Object other) {
        if (other instanceof MyObject) {
            return getId() == ((MyObject) other).getId();
        }
        return false;
    }
}

然后,ArraySet 将按您的预期工作