作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我喜欢 guava 前提条件,但我真正需要的是另一种方法 - 检查数字是否在范围内。像这样
//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
中吗?
最佳答案
我要说的原因有很多。以下是主要内容:
Preconditions
方法为其检查的内容抛出特定的异常类型:NullPointerException
, IllegalArgumentException
, IllegalStateException
或 IndexOutOfBoundsException
.广义范围检查不会有比 IllegalArgumentException
更具体的异常 throw 。checkArgument
和 checkState
做你需要的一切。你可以只写 checkArgument(value >= min && value <= max, ...)
.您要检查的内容简单明了。另外:
int
s 代表边界,所以你真的很想允许任何 Comparable
那里。关于java - 检查范围前提条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217855/
我是一名优秀的程序员,十分优秀!