【发布时间】:2013-04-25 06:38:14
【问题描述】:
当我不得不编写近 10 行代码来说出 2 Objects are equal, when their type is equal and both's attribute is equal 时,我感到很头疼。您可以很容易地看到,通过这种编写方式,行数会随着您的属性数而急剧增加。
public class Id implements Node {
private String name;
public Id(String name) {
this.name = name;
}
public boolean equals(Object o) {
if (o == null)
return false;
if (null == (Id) o)
return false;
Id i = (Id) o;
if ((this.name != null && i.name == null) || (this.name == null && i.name != null))
return false;
return (this.name == null && i.name == null) || this.name.equals(i.name);
}
}
【问题讨论】:
-
请参阅我的答案以正确实现 equals。将某些内容转换为错误的类型会给您一个运行时异常 (ClassCastException),而不是 null。请阅读有效的 java 以获得 fantastic 解释。
-
顺便说一句 - 我在我的回答中链接到有效 java 的实际章节:-)。
标签: java