java - 使用Optional验证输入法参数

标签 java validation null guava nullable

我想知道检查可能为空的方法参数的最佳方法是什么。

第一个合理的方法是使用 Guava :

String validatedValue= Optional.fromNullable(input).or("defaultValue");

第二种合理的方法是使用常规 java。对于不了解 Guava 的人来说,它可能具有易于理解的优点。然而它仍然显示“低级”代码。

String validatedValue= input !=null ? input : "empty";

或者第三种方法。一方面,main 方法看起来不错。另一方面,它可能会产生许多小的私有(private)方法。

String validatedValue = getValidatedValue(input); //this private method will contain option two

目前看来第二种或第三种方法更好,在这种情况下不应使用Optional。有人能告诉我这种情况下的最佳实践是什么吗?

最佳答案

尽管我不会将此称为“验证”,但提供 default if null 的首选方法类似于 #2(如果不是 #2 本身) - 使用 Guava 的 Objects.firstNonNull (从 Guava 18 开始,它被放置在 MoreObjects 中):

String value = Objects.firstNonNull(input, "empty"); // MoreObjects since 18.0

其内部功能:

return first != null ? first : checkNotNull(second);

通过静态导入,它只是:

String nonNullValue = firstNonNull(input, "empty");

但是您使用哪一个只是一个偏好问题。

附注在一种情况下,我会使用可选 - if you want lazy evaluated default ,但对于字符串则不是这样。仅用于空检查的私有(private)方法有点过分了,但如果您对值有其他假设,通常认为使用具有有意义名称的小型私有(private)方法是一种很好的做法(请参阅 Clean Code by Uncle Bob )。

关于java - 使用Optional验证输入法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508281/

相关文章:

java - 检查输入的号码

java - 比较java中的两个可能为空的值

java - 我的代码显示错误

java - 在 NIO 中配对 SocketChannel

javascript - 客户端 JavaScript 字段验证

java - 在空对象上调用静态方法

javascript - 对象中的 null 和 undefined

java - 尝试从 jar 文件加载图标

java - 删除学生数组中的学生

c++ - 循环,if 语句,使用 inputFile 的函数仅输出 0