Update 16-Validating-Your-Code.md

This commit is contained in:
独奏猫
2019-08-27 16:50:08 +08:00
committed by GitHub
parent 585176b639
commit 8f83875ddf

View File

@@ -882,7 +882,7 @@ NullPointerException
*/
```
虽然Guava的前置条件适用于所有类型但我只演示 字符串类型。**test()**方法需要一个**Consumer<String>**因此我们可以传递一个lambda表达式作为第一个参数字符串。以及作为第二个参数传递给lambda的字符串。它显示字符串以便在查看输出时确定方向然后将字符串传递给lambda表达式。try块中的第二个 **println**() 仅在lambda表达式成功时才显示; 否则catch将捕获并显示错误信息。注意 **test()** 方法消除了多少重复的代码。
虽然Guava的前置条件适用于所有类型但我只演示 **字符串String** 类型。**test()**方法需要一个**Consumer<String>**因此我们可以传递一个lambda表达式作为第一个参数字符串。以及作为第二个参数传递给lambda的字符串。它显示字符串以便在查看输出时确定方向然后将字符串传递给lambda表达式。try块中的第二个 **println**() 仅在lambda表达式成功时才显示; 否则catch将捕获并显示错误信息。注意 **test()** 方法消除了多少重复的代码。
每个前置条件都有三种不同的重载形式:一个什么都没有,一个带有简单字符串消息,以及带有一个字符串和替换值。为了提高效率,只允许 **%s** (字符串类型)替换标记。在上面的例子中,演示了**checkNotNull()** 和 **checkArgument()** 这两种形式。但是它们对于所有前置条件方法都是相同的。注意 **checkNotNull()** 的返回参数, 所以您可以在表达式中内联使用它。下面是如何在构造函数中使用它来防止包含 **Null **值的对象构造: