所以基本上我有一个简单的remove
函数,如果ID匹配,它会将学生从我的列表中删除。在编写此方法时,我使用==
,因为s.getId()
返回基本类型。但我写了一个.equals
方法应该覆盖它,但现在我无法调用.equals
上的s.getId()
。
equals
中的 Student
方法:
public boolean equals(StudentIF other) {
if (other == null) {
return false;
}
if (this.id == other.getId()) {
return true;
}
return false;
}
然后是remove
类中的LL
方法:
public boolean remove(StudentIF s) {
// TODO Auto-generated method stub
StudentLLNode current = head;
if (s == null) {
return false;
}
if (s.getId() == (head.getStd().getId())) {
// StudentLLNode top = head;
head = head.getNext();
size--;
return true;
} else {
StudentLLNode previous, next;
previous = current;
next = current.getNext();
while (current != null) {
next = current.getNext();
if (s.getId() == (current.getStd().getId())) {
previous.setNext(next);
size--;
return true;
}
previous = current;
current = next;
}
}
return false;
}
答案 0 :(得分:3)
equals方法接收一个Object作为参数,以下是NetBeans自动为类生成equals方法的方法。
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
return false;
}
return true;
}
答案 1 :(得分:3)
对象类equals
方法接受类型Object
的输入。 equals
方法的正确签名是:
public boolean equals(Object other)
@Override
注释可以帮助您确定是否正确覆盖了某个方法。
覆盖方法时,您可能想要使用@Override 指示编译器您要覆盖的注释 超类中的方法。如果由于某种原因,编译器检测到 该方法在其中一个超类中不存在,那么它 会产生错误。