[英]Overriding a .equals() method
因此,基本上,我有一个简单的remove
功能,如果ID匹配,则会将学生从我的列表中remove
。 编写此方法时,我使用==
因为s.getId()
返回原始类型。 但是我写了一个.equals
方法,该方法应该覆盖它,但是现在我无法在s.getId()
上调用.equals
。
equals
Student
类中的方法:
public boolean equals(StudentIF other) {
if (other == null) {
return false;
}
if (this.id == other.getId()) {
return true;
}
return false;
}
然后是我在LL
类中的remove
方法:
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;
}
equals方法接收对象作为参数,这是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;
}
对象类equals
方法采用类型Object
的输入。 equals
方法的正确签名是:
public boolean equals(Object other)
@Override
批注可帮助您确定是否正确覆盖了方法。
从oracle教程 :
覆盖方法时,可能需要使用@Override批注,该注释指示编译器打算覆盖超类中的方法。 如果由于某种原因,编译器检测到该方法在超类之一中不存在,则它将生成错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.