gpt4 book ai didi

java - java 8+ 中是否有一个可以替代 guava PreConditions 的良好字段验证?

转载 作者:行者123 更新时间:2023-12-02 04:25:28 27 4
gpt4 key购买 nike

我想在我的应用程序的方法中添加字段验证(例如字段不为空且为正)。

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 类,它具有一些用于空检查验证的基本实用方法:

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 等外部库?

最佳答案

Java 8+(直到 12)没有这样的方法(也许将来会出现一些变化)。

  • 从纯Java方面,您可以使用assert :

     assert <condition> : <message>

如果断言失败 AssertionError抛出 <message> .

但是,您应该确保通过添加 -ea 来激活它属性到 JVM
断言为失败的案例添加更有意义的信息。
然而,断言的目的不是检查方法参数。因此,看看第二种方法。

  • 作为替代方案,您可以使用 apache-commons-lang Validate类:

     Validate.notNull(i, "this parameter can't be null")
    Validate.isTrue(i > 0, "The value must be greater than zero: %d", i);

这种方法更适合验证方法的参数。

<小时/>

如果您使用 Spring 框架,您可以使用 Assert类。

来自文档的片段 - 帮助验证参数的断言实用程序类。

用法如下:

Assert.notNull(clazz, "The class must not be null");
Assert.isTrue(i > 0, "The value must be greater than zero");

关于java - java 8+ 中是否有一个可以替代 guava PreConditions 的良好字段验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com