相关疑难解决方法(0)

比较两个对象并检查null

JDK中是否有一个方法可以比较两个对象的相等性,从而计算空值?像这样的东西:

public static boolean equals(Object o1, Object o2)
{
    if (o1 == null)
    {
        return o2 == null; // Two nulls are considered equal
    }
    else if (o2 == null)
    {
        return false;
    }

    return o1.equals(o2);
}
Run Code Online (Sandbox Code Playgroud)

自己编写这个方法似乎很愚蠢,因为我认为它必须已经存在于某个地方.

java comparison null equals

43
推荐指数
4
解决办法
3万
查看次数

比较两个对象,其中任何一个都可以为null

我在我的一个类中有一个函数,它将自己与同一个类的另一个实例进行比较 - 并找出哪些变量不同.这是为了最大限度地减少主数据库的网络负载(仅上传需要上传的数据,而不是上传整个对象).

为此,我一直在尝试使用该object.equals()函数来比较两个对象.

我很快就发现object.equals()它没有处理null,在看完这个问题之后,我理解为什么.

所以我破坏的代码示例如下:

public class MyObject {

    String myString;
    String myString2;

    public String getChangedVars(MyObject comparisonObj) {
        ArrayList<String> changedVars = new ArrayList<String>();

        if (!this.myString.equals(comparisonObj.myString))
            changedVars.add("myString");
        if (!this.myString2.equals(comparisonObj.myString2))
            changedVars.add("myString2");

        return changedVars.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 基于被比较的变量中的任何一个可能为空,比较两个变量同时避免一个变量的简单方法是NullPointerException什么?

编辑:简单地检查两个对象上的null首先不能正常工作,因为我仍然希望比较对象是否有引用.例如,如果一个项目是null,而另一个项目不是,我希望这个解析为true,因为变量已经改变.

java

9
推荐指数
1
解决办法
4127
查看次数

标签 统计

java ×2

comparison ×1

equals ×1

null ×1