是否有Java标准的“等于或等于null”静态方法?


101

为了节省一些输入并澄清我的代码,以下方法是否有标准版本?

public static boolean bothNullOrEqual(Object x, Object y) {
  return ( x == null ? y == null : x.equals(y) );
}

有人可以说这样的事有用吗?
anjanb

2
它只允许您跳过equals()方法中的空检查。
迈克尔·迈尔斯

1
如果要实现Collection,则在给定“ o”时,.contains()方法需要测试“该集合是否包含至少一个元素e,使得(o == null?e == null:o.equals(e ))。” 同样,您的.remove()方法必须删除此类元素。
newacct

6
只是我的两分钱。我将使用:public static boolean bothNullOrEqual(Object x,Object y){return(x == y ||(x!= null && x.equals(y))); 恕我直言,对于新手程序员而言,它更具可读性。
m_vitaly 2010年

1
另一个用例:比较值以查看是否在脏检查期间更改了先前的值。
Neromancer

Answers:


193

使用Java 7,您现在可以直接执行null安全等于:

Objects.equals(x,y)

(Jakarta Commons库ObjectUtils.equals()在Java 7中已经过时了)


Google的依赖项注入库Guice中也实现了此方法。
尼尔斯2012年

1
Spring还实现了类似的方法:ObjectUtils类上的
nullSafeEquals

2
Google Guava也具有Objects.equals()。
斯宾娜

这只是nullsafe的x。对于y,它取决于给定对象的equals的实现。(实现是return (x == y) || (x != null && x.equals(y));
emi-le


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.