在生成 .equals() 时 getClass() 与 instanceof 的首选用法
使用 Eclipse 的代码生成器生成 .equals() 和.hashCode(),您可能会遇到使用“instanceof”进行类型比较的选项或.getClass()。默认选择是 .getClass(),但本文探讨使用 .getClass() 相对于 instanceof 是否有任何优势。
不使用 instanceof 的比较:
if (obj == null) return false; if (getClass() != obj.getClass()) return false;
比较使用instanceof:
if (obj == null) return false; if (!(obj instanceof MyClass)) return false;
通常,建议使用instanceof选项并删除“if (obj == null)”检查,因为null对象将不可避免地失败instanceof。然而,这种做法本质上是错误的吗?
instanceof 的论证
著名 Java 专家 Josh Bloch 赞同这种方法,并引用了以下推理:
其他资源
以上是Java 的 `.equals()` 方法中的 `getClass()` 与 `instanceof` 哪个更好?的详细内容。更多信息请关注PHP中文网其他相关文章!