比较可以为 null 和空字符串 ("") 的对象

Mar*_*elo 2 java string null object

你好,我已经到了一个点,我需要一个函数来比较来自不同来源的 2 个对象,它还比较字符串,同时形成一个源 iget 一个空值,另一个源获得一个空对象字符串。

我的代码是

private static boolean areDifferent(Object o1, Object o2) {
    if ("".equals(o1)) {
        o1 = null;
    }
    if ("".equals(o2)) {
        o2 = null;
    }
    if (o1 == null || o2 == null) {
        return !(o1 == o2);
    }
    return !o1.equals(o2);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来写这个?

rol*_*lfl 5

您可以为它使用三元组(我会将 null 转换为“”):

return !(o1 == null ? "" : o1).equals(o2 == null ? "" : o2);
Run Code Online (Sandbox Code Playgroud)

  • @Batty - 上面的真值表与 OP 相同。如果两个值都是`""`,它将返回“false”,这是对名为“areDifferent”的方法的正确响应 (2认同)