编程语言
首页 > 编程语言> > java – 检入范围前置条件

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