先决条件|番石榴|爪哇
简介:preferences 类提供了一个 静态方法 的列表,用于检查某个方法或构造函数是否用有效的参数值调用。如果前提条件失败,则会引发定制的异常。
- 这些方法通常接受一个预期为真的布尔表达式。
- 在 checkNotNull 的情况下,这些方法接受预期为非 Null 的对象引用。
- 当传递 false/null 时,preferences 方法会引发未检查的异常。
申报:
@GwtCompatible
public final class Preconditions
extends Object
示例 1 : 在本例中,checkArgument 抛出一个IllegalArgumentException来指示 examplePre1 在调用 sqrt 时出错,因为传递的参数是负数。
// Returns the positive square
// root of the given value.
// throws IllegalArgumentException
// if the value is negative
public static double sqrt(double value)
{
Preconditions.checkArgument(value >= 0.0, "negative value: %s", value);
// calculate the square root
}
void examplePre1()
{
// Function calling
double ans = sqrt(-5.0);
}
例 2 : 假设给我们一个以 List 作为参数的方法。当调用这个方法时,我们要检查列表是否为空。这个问题的一个简单的 Java 解决方案如下所示:
// Method to check if passed list
// is null or empty
public void example(List<Object> myList)
{
// To check if passed list is null
if (myList == null) {
throw new IllegalArgumentException("List must not be null");
}
// To check if passed list is empty
if (myList.isEmpty()) {
throw new IllegalArgumentException("List must not be empty");
}
// Function calling
example(myList);
}
但是,当我们使用番石榴的先决条件时,代码量大大减少。解决方案类似于:
// Method to check if passed list
// is null or empty
public void example(List<Object> myList)
{
// Check if list is null or not
checkArgument(myList != null, "List must not be null");
// Check if list is empty or not
checkArgument(!myList.isEmpty(), "List must not be empty");
// Function calling
example(myList);
}
示例 3 : 如果要验证年龄以确保其大于 18,可以使用 prepreprecedent . checkargument()。
// To check if age is greater than 18 or not
public static void validateAge(int age)
{
// Guava Preconditions
checkArgument(age > 18);
}
下表显示了番石榴先决条件提供的一些方法。
每种方法都有三个变体,如下所示:
- 没有额外的参数:抛出任何异常都不会有错误消息。
- 一个额外的对象参数:任何异常都会引发错误消息 object.toString()。
- 一个额外的字符串参数:这个方法使用一个额外的字符串参数和任意数量的附加对象参数。这表现得有点像 printf,但是为了 GWT 的兼容性和效率,它 只允许%s 指标 。
第三种变体的例子:
checkArgument(i >= 0, "Argument was %s but expected nonnegative", i);
checkArgument(i < j, "Expected i = %s", i, j);
番石榴先决条件提供的其他一些方法有:
要点:下面给出了一些关于番石榴先决条件的要点。
- 当然可以使用这个类的方法来检查无效条件,这些无效条件不是调用者的错。不建议这样做,因为它会误导代码的未来读者。
- 使用 的项目一般应该避免使用对象。取而代之的是,使用 checkNotNull(对象)或 Verify.verifyNotNull(对象)中适合这种情况的任何一个。
- 在先决条件错误消息模板字符串中, 仅支持“%s”说明符 ,而不支持全部格式化程序说明符。
示例:
// Java code to show implementation of
// Guava Preconditions
import com.google.common.base.Preconditions;
class GFG {
// Driver code
public static void main(String args[])
{
// Creating object of GFG Class
GFG obj = new GFG();
// try block
try {
System.out.println(obj.sum(5, null));
}
// catch block
catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
// Method to compute sum of 2 Integers
public int sum(Integer num1, Integer num2)
{
// Guava Preconditions
num1 = Preconditions.checkNotNull(num1,
"Illegal Argument, First parameter is Null.");
// Guava Preconditions
num2 = Preconditions.checkNotNull(num2,
"Illegal Argument, Second parameter is Null.");
return (num1 + num2);
}
}
输出:
Illegal Argument, Second parameter is Null.
参考:T2】谷歌番石榴
版权属于:月萌API www.moonapi.com,转载请注明出处