【发布时间】:2016-04-06 12:41:06
【问题描述】:
几天前,我的教授向我们展示了如何实现 equals 方法等等。
这是他的 equals 方法的代码示例,我不明白一部分:
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Knjiga other = (Knjiga) obj;
return Objects.equals(isbn,other.isbn);
}
在第一个 if 语句中,他检查 this(当前对象)是否与对象 obj 具有相同的引用(这就是 == 运算符的作用?只比较两个引用)
如果他们得到相同的引用,它会返回 true 吗? 但是我们永远不会检查其他字段,例如 isbn 以及我们可以放置的更多字段,因为如果这两个对象具有相同的引用,方法将永远不会出现。
在我看来,这种方法类似于双等号运算符,因为这两个都不会检查字段,只能参考?
【问题讨论】:
-
如果两个引用相同,那么它是一个对象,而不是两个。
-
您的教授没有在他的 if 语句中使用大括号?哇。另外:Objects.equals 已经检查了引用和空值。