我喜欢番石榴前提条件,但我真正需要的是另一种方法 - 检查数字是否在范围内。像这样的smt
//probably there should be checkStateInRange also
public static void checkArgumentInRange(double value, int min, int max) {
if (value < min || value > max) {
throw new IllegalArgumentException(String.format("%s must be in range [%s, %s]", value, min, max));
}
}
我相信我并不孤单,而且这是一个很常见的情况。但这样的方法并不存在。有什么理由不将这些方法放入com.google.common.base.Preconditions
?
我想说的原因有很多。以下是主要的:
- 对于“值超出范围”,没有标准的 Java 异常类型。请注意,每个
Preconditions
方法针对其检查的内容抛出特定的异常类型:NullPointerException
, IllegalArgumentException
, IllegalStateException
or IndexOutOfBoundsException
。广义的范围检查毫无例外地比IllegalArgumentException
扔。
-
checkArgument
and checkState
做你需要的一切。你可以只写checkArgument(value >= min && value <= max, ...)
。您要检查的内容简单明了。
此外:
- 您可能需要太多不同的组合。 @rsp 提到的独占/包含边界等。
- 它的限制是只允许
int
s 为边界,所以你真的希望允许任何Comparable
there.
- 此时您会注意到您只是检查该值是否包含在Range http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/com/google/common/collect/Range.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)