我有这个方法:
private Boolean compare(String property, String relationOperator,
String operand) {
Integer propertyValue = NumberUtils.toInt(property);
Integer operandValue = NumberUtils.toInt(operand);
switch (relationOperator)
{
case "<": return propertyValue.compareTo(operandValue) < 0;
case "<=": return propertyValue.compareTo(operandValue) <= 0;
/*WARN*/case "=": return propertyValue.compareTo(operandValue) == 0;
case ">=": return propertyValue.compareTo(operandValue) >= 0;
case ">": return propertyValue.compareTo(operandValue) > 0;
case "!=": return propertyValue.compareTo(operandValue) != 0;
}
return Boolean.FALSE;
}
对于标记为
/*WARN*/
的行,FindBugs 3.0.0 告诉我:我认为代码没问题,因为我比较的是
int
s 而不是 Integer
s,所以我可以在这一行安全地使用 @SuppressWarnings
吗? 最佳答案
你的代码很可怕,因为它使用包装类,并且在它可以使用原语时进行比较。此外,您的代码过于聪明。你应该尝试 write dumb code 。就像是,
private boolean compare(String property, String operator, String operand) {
int pv = Integer.parseInt(property);
int ov = Integer.parseInt(operand);
if (operator.equals("<")) {
return pv < ov;
} else if (operator.equals("<=")) {
return pv <= ov;
} else if (operator.equals(">")) {
return pv > ov;
} else if (operator.equals(">=")) {
return pv >= ov;
} else if (operator.equals("!=")) {
return pv != ov;
} else if (operator.equals("=") || operator.equals("==")) {
return pv == ov;
}
return false;
}
关于java - 这是真正的警告还是过度敏感的 Lint ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26457921/