java - 最佳实践和高效的 equals() 覆盖方法

标签 java intellij-idea

<分区>

第一个是我用intelliJ IDEA生成的代码,另一个是我引用Oracle教程写的代码。

哪个最实用、效率更高?

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Member member = (Member) o;

    if (!email.equals(member.email)) return false;

    return true;
}


@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o instanceof Member) {
        return email.equals(((Member) o).getEmail());
    } else {
        return false;
    }
}

最佳答案

关于效率,它们是等效的。使用第一个或第二个对性能没有影响。不过,我更喜欢第一个,因为它“保护”您不将对象与子类的对象进行比较,这会导致奇怪的、意想不到的和不一致的结果。

关于java - 最佳实践和高效的 equals() 覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701513/

相关文章:

java - 向用户显示 JButton 已开启某些功能

java - Switch 语句中的 PowerMockito 枚举抛出 NPE

java - Firebase 使用 java(非 Android)检索信息

Java客户端发送音频到UDP服务器

java - 是否有类似于 ImageMagick 的简单 Java 图像处理库?

maven - 无法更改 Maven 本地存储库路径

intellij-idea - JavaFX:警告自动关闭对话框

gwt - 使用 IntelliJ12 JBOSS 服务器调试 GWT 客户端

java - 使用 exec-maven-plugin 进行调试

java - IntelliJ 插件开发 : PluginException cannot create class Action