繁体   English   中英

覆盖.equals()方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM