gpt4 book ai didi

java - 检查两个对象是否不相等,除非它们都是 null

转载 作者:行者123 更新时间:2023-12-02 11:38:48 24 4
gpt4 key购买 nike

下面的 Java 代码片段让我有点困惑。该方法尝试检查两个对象是否相等,使用标准的.equals()方法来表示它们相等。此外, boolean 值可以确定两个 null 是否被视为相等。我想知道是否:

  • 这个方法中的 boolean 逻辑确实正确吗?
  • 中间 block 中的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,因为 equals方法variable如果 otherVariable 则应返回 false为空。

还有一种更简洁的写法,但不值得考虑,因为它牺牲了可读性。

关于java - 检查两个对象是否不相等,除非它们都是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com