Java是否也对处理空值的相等性进行了通用测试?

0xb*_*7ed 6 java

Java标准库中是否存在具有静态相等函数的任何地方?

public static <T> boolean equals(T a, T b)
{
    if (a == null)
        return b == null;
    else if (b == null)
        return false;
    else
        return a.equals(b);
}
Run Code Online (Sandbox Code Playgroud)

我刚刚在一个新的项目Util类中实现了这个,无数次.似乎令人难以置信的是它不会作为标准库函数发布......

mar*_*ido 13

在JDK 7中有Objects#equals().来自Javadoc:

如果参数彼此相等则返回true,否则返回false.因此,如果两个参数都为null,则返回true,如果只有一个参数为null,则返回false.否则,通过使用第一个参数的equals方法确定相等性.

除了Apache Commons Lang中已经提到的功能之外,Google Guava还有一个,Objects#equal():

  • 不,我没有撤消你的编辑......永远不会那样做.我花了一段时间才能获得Google Guava的链接.那么也许这就是为什么你的编辑消失了? (3认同)
  • @SteveKuo也许你在编辑时提出了一个编辑,有效地覆盖你的编辑而没有看到它的马蒂 (3认同)

NIN*_*OOP 5

Java 7以后我们有JDK 7 Objects#equals().

您也可以查看第三方库:

Apache Commons ObjectUtils#equals(),Google的Guava Objects#equal()和Spring的ObjectUtils #nullSafeEquals().