当前位置:  开发笔记 > 编程语言 > 正文

平等比较 - 任何更健全的方式?

如何解决《平等比较-任何更健全的方式?》经验,为你挑选了4个好方法。

如何实现这种相等比较是一种理智的java方式?

boolean x = (a == b) || (a.equals(b))

我想确保两个对象的内容相等但null也可以,即两者都可以为null,因此是相等的.

更新:为了清楚,我必须多次实现这种比较,并且不希望每次都复制和粘贴这些东西,特别是对于长度的对象名称.使用'a'和'b'它看起来小而简单,但往往会增长...我想知道我是否缺少一些现有的Java功能.



1> Guillaume..:

您可能希望了解始终有用的Apache Commons Lang,更准确地说是ObjectUtils.equals().



2> Dennis C..:

另一种方法

boolean x = null==a ? null==b : a.equals(b);



3> tvanfosson..:

如果a为null但b不是,会发生什么?我想你真的想要:

boolean x = (a == null && b == null) || (a != null && a.equals(b))

编辑:你可以为该类实现一个静态NullEquals方法,该方法接受该类的两个对象,并进行上述比较,以避免重写并使代码更清晰.

public class MyClass {

    public static boolean NullEquals( MyClass a, MyClass b )
    {
         return (a == null && b == null) || (a != null && a.equals(b));
    }
}


if (MyClass.NullEquals(a,b))
{
    ...
}



4> Jon Skeet..:

典型的模式是:

if (a == b)
{
    return true;
}
if (a == null || b == null)
{
    return false;
}
// Now deal with a and b, knowing that they are non-identical, non-null references

是的,它是罗嗦的 - 但是如果你把它分成它自己的方法,你可以把它保持在合理的控制之下.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有