为了避免在equals()
中出现空指针异常,我必须考虑一个或多个空值的可能性。
是否有一种可扩展的方式来考虑空值?如果添加更多类型参数,以下代码将变得非常难看。
public boolean equals(Pair<T, U> p) {
boolean firstIsEqual, secondIsEqual;
if (p.getFirst()==null) {
firstIsEqual = first == null;
}
else {
firstIsEqual = (first!=null) && (first.equals(p.getFirst()));
}
// copy-paste...
if (p.getSecond()==null) {
secondIsEqual = second == null;
}
else {
secondIsEqual = (second!=null) && (second.equals(p.getSecond()));
}
return (firstIsEqual && secondIsEqual);
}
答案 0 :(得分:0)
唯一可扩展的解决方案是:
严重:现实世界中没有人手动编写equals / hashCode方法。您使用工具并告诉您在计算中应使用哪些字段。如果添加了字段,则必须记住要重新生成方法。
或者您使用支持数据类(例如Kotlin或Scala)的jvm语言。