java – 检入范围前置条件
作者:互联网
我喜欢番石榴的前提条件,但我真正需要的是另外一种方法 – 检查数字是否在范围内.像这样的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或IndexOutOfBoundsException.广义范围检查没有比抛出IllegalArgumentException更具体的异常.
> checkArgument和checkState可以完成您需要的一切.你可以写checkArgument(值> = min&& value< = max,...).您正在检查的内容很简单明了.
另外:
>这里有太多不同的组合. @rsp提及的独家/包含界限等
>限制只允许对边界进行注入,所以你真的想在那里允许任何Comparable.
>此时您会注意到您只是检查该值是否包含在Range中.
标签:java,guava,preconditions 来源: https://codeday.me/bug/20190714/1462236.html