以下Java代码片段让我感到困惑。该方法试图检查两个对象是否 NOT 相等,使用标准.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");
}
}
答案 0 :(得分:1)
是的,方法中的逻辑是正确的。如果两个对象相等,它会抛出异常。您可以删除第二个条件并将其与第三个条件组合,但我没有看到太多意义。如果你这样做,方法可能如下所示。
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
是否为空,因为如果equals
为空,variable
上的otherVariable
方法应返回false。
有一种更简洁的方式来写这个,但它不值得考虑,因为它牺牲了可读性。