Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么GooglePremission库中的checker使用对象而不是字符串_Java_Gwt_Guava_Preconditions - Fatal编程技术网

Java 为什么GooglePremission库中的checker使用对象而不是字符串

Java 为什么GooglePremission库中的checker使用对象而不是字符串,java,gwt,guava,preconditions,Java,Gwt,Guava,Preconditions,为什么Google Premission库中的check*方法采用对象而不是字符串?我可以看到该对象在上被称为String.valueOf()。我认为这种设计是因为没有代表客户做出任何假设。但我想不出一个合理的例子,客户机会用字符串以外的任何东西调用它 我猜客户端可以传递一个实现了toString()方法的对象。但是你能举一个真实的例子说明如何使用这个/你一直在使用这个吗 为什么Google Premission库中的check*方法采用对象而不是字符串 表演。如果我有一个对象不是字符串,特别是

为什么Google Premission库中的check*方法采用对象而不是字符串?我可以看到该对象在上被称为String.valueOf()。我认为这种设计是因为没有代表客户做出任何假设。但我想不出一个合理的例子,客户机会用字符串以外的任何东西调用它

我猜客户端可以传递一个实现了toString()方法的对象。但是你能举一个真实的例子说明如何使用这个/你一直在使用这个吗

为什么Google Premission库中的check*方法采用对象而不是字符串

表演。如果我有一个对象不是
字符串
,特别是
toString()
是一种昂贵的方法,那么:

checkArgument(valid, obj.toString());
将无条件调用
toString()
,并立即放弃结果。另一方面:

checkArgument(valid, obj);
可以推迟调用。由于检查预计会成功,因此延迟可以避免浪费


这与使用日志格式而不是传递连接字符串()的原因相同。

同意Joe和plus的观点:null处理

请参阅方法签名:
checkArgument(布尔表达式,@Nullable Object errorMessage)