覆盖 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
将按您的预期工作
如何在没有得到
的情况下实现这一点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,这意味着您不能继承它。当您编写
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
将按您的预期工作