基于方法参数的反布尔结果

时间:2015-03-18 08:29:49

标签: java

请你根据方法参数提出整齐的java代码片段来反转布尔结果 这不是一个有效的例子:

public boolean isSomethingTrue(boolean inverseLogic) {
  boolean resultOfCalculation = ...
  return inverseLogic && resultOfCalculation;
}

result  | inverse  | desired return
true    | false     | true
false   | false     | false        
true    | true      | false
false   | true      | true

2 个答案:

答案 0 :(得分:4)

您可以使用三元运算符:

public boolean isSomethingTrue(boolean inverseLogic) {
    boolean resultOfCalculation = ...
    return inverseLogic ? !resultOfCalculation : resultOfCalculation;
}

另一种选择是XOR:

public boolean isSomethingTrue(boolean inverseLogic) {
    boolean resultOfCalculation = ...
    return inverseLogic ^ resultOfCalculation;
}

答案 1 :(得分:1)

如果你看一下你想要的真相表:

inverse?    calculation    return-value
 false       false          false
 false       true           true
 true        false          true
 true        true           false

然后您可能会注意到这正是inverseLogic XOR resultOfCalculation的真值表。

然而,这可能是一个稍微模糊的操作,所以要么好好评论,以便在以后回读代码时理解它,或者使用Eran建议的三元.. ? .. : .. - 它可能会生成< em>略微效率更低的代码,但除了最关键的系统之外,您更喜欢可读的版本。