检查两个对象是否不相等,除非它们均为null



以下代码的Java片段使我有些困惑。该方法正在尝试使用标准.equals()方法来表示两个对象是否不是相等的,以表示它们是相等的。此外,布尔值可以确定两个空的零值是否相等。我想知道:

  • 这种方法中的布尔逻辑确实是正确的吗?
  • 可以以某种方式省略中间块中的return语句。是否可以更简洁或其他方式重写此逻辑,也许会放弃空的回报,但要保持高度的人类可读性?

摘要:

public static void verifyVariableIsNotEqualTo(Object variable, Object otherVariable, boolean considerBothNullAsEqual)
{
    if(considerBothNullAsEqual && variable == null && otherVariable == null)
    {
        throw new Exception("not allowed to be equal");
    }
    if(variable == null || otherVariable == null)
    {
        return;
    }
    if(variable.equals(otherVariable))
    {
        throw new Exception("not allowed to be equal");
    }
}

是的,该方法中的逻辑是正确的。如果两个对象相等,它会引发异常。您可以删除第二个条件并将其与第三个条件结合在一起,但我看不到太多。如果您这样做了,方法可能看起来像这样。

public static void verifyVariableIsNotEqualTo(Object variable, Object otherVariable, boolean considerBothNullAsEqual) throws Exception
{
    if(considerBothNullAsEqual && variable == null && otherVariable == null)
    {
        throw new Exception("not allowed to be equal");
    }
    if(variable != null && variable.equals(otherVariable))
    {
        throw new Exception("not allowed to be equal");
    }
}

请注意,无需检查otherVariable是否分别为null,因为variable上的equals方法如果otherVariable为null,则应返回false。

有一种更简洁的方法来写这篇文章,但不值得考虑,因为它牺牲了可读性。

相关内容

  • 没有找到相关文章

最新更新