【发布时间】:2019-03-24 12:57:34
【问题描述】:
我想在我的应用程序的方法中添加字段验证(例如,字段不为空且为正)。
private void assertionTest(Integer i) {
// want to first assert here that i is not null and positive
// something like:
// Preconditions.checkArgument( i != null && i > 0, "i should be non null positive number!" );
//
System.out.println( "i: " + i);
}
Java 8 引入了 Objects 类,该类具有一些用于 null 检查验证的基本实用方法:
public static <T> T requireNonNull(T obj)
public static <T> T requireNonNull(T obj, String message)
但它仍然缺乏 guava 的 Preconditions 类提供的完整验证列表,如下所示:
checkArgument(boolean) throws IllegalArgumentException
checkState(boolean) throws IllegalStateException
etc.
在 Java 8+ 中是否有更好的替代方法来进行字段验证,这样我就不必为此包含像 guava 这样的外部库?
【问题讨论】:
-
请注意:Guava 几乎是 3MB 的压缩字节码。不要为了省去写这几个单行方法而包含 Guava
-
您的问题的答案是:不,没有。
-
它没有,但考虑到番石榴还有多少其他好东西......
-
从 Java 9 开始,还有
Objects.checkIndex(…)方法家族。但不会有“详尽的验证清单”。由于可能的条件数不胜数,因此即使试图涵盖所有这些条件也是没有意义的。 -
@saurabh.in 你的问题解决了吗?
标签: java validation java-8