- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为什么 Google Precondition 库中的 check* 方法采用对象而不是字符串?我可以看到对象被称为 String.valueOf() on。我认为这种设计是由于没有代表客户做出任何假设。但是我想不出一个合理的情况,客户端会用字符串以外的任何东西来调用它。
我想客户可以传递一个实现了 toString() 方法的对象。但是你能举一个真实世界的例子来说明如何使用它/你一直在使用它吗?
最佳答案
Why does check* methods in Google Precondition library take an Object instead of a String?
性能。如果我有一个还不是 String
的对象,尤其是 toString()
是一种昂贵方法的对象,那么:
checkArgument(valid, obj.toString());
将无条件调用 toString()
并立即丢弃结果。另一方面:
checkArgument(valid, obj);
可以推迟那个调用。由于预计检查会成功,因此延迟可以避免浪费。
这与使用日志格式而不是传递连接字符串 (Logger slf4j advantages of formatting with {} instead of string concatenation) 的原因相同。
关于java - 为什么 Google Precondition Library 中的 Checkers 接受对象而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28427965/
我是 Selenium 的新手,我正在尝试创建一个小型框架,我在其中登录一个应用程序,然后尝试验证帐户中的一些文本。 但是一旦我的脚本登录帐户,浏览器就会关闭,我无法验证文本字符串。 有人说是因为dr
我正在Xcode 11上构建SwiftUI应用程序,但是当我切换到应用程序中的特定选项卡时,它会立即终止。 问题是,它始终指向Application Delegate文件,我认为这并不是真正的问题。我
脚步: 接收 ViewModel 以更新或创建实体 如果存在,则尝试获取现有实体 调用 IMapper.map(viewModel, entity) 因为我正在为 map 提供目标值,所以是否可以检查
在阅读了一些关于集成管道的文档后,我对 IIS 如何确定何时运行托管模块、托管请求实际上是什么以及如何确定感到困惑,例如: http://www.iis.net/learn/application-f
为什么当警告级别处于 2 级或更高级别时,我会立即收到此琐碎代码示例的以下警告? public int Foo(int a) { if (a >= 0) throw new ArgumentE
据我了解,在更改某些对象状态之前,我们使用 Guava 先决条件快速失败(来自 stackoverflow 的一个很好的答案 here)。这很好。然而,它会抛出运行时异常,并且这不是应用程序用户最喜欢
我正在为类 ForeignCollection 编写反序列化程序,即 abstract ,并在 ORMLite Android Library 中提供给我.请参阅下面的代码。 public class
在我们的代码中,我们经常使用Preconditions 检查参数: Preconditions.checkArgument(expression, "1" + var + "3"); 但有时,这段代码
我正在尝试对类的成员函数返回的值使用@postcondition 装饰器,如下所示: def out_gt0(retval, inval): assert retval > 0, "Retur
我的应用程序运行良好,但由于我的操作系统 Debian 出现问题,我决定重新安装它并选择安装 Ubuntu-16.04 而不是最后一个 Debian。现在一切正常。 问题是我的 android 应用程
在我的项目中,我们使用 voltdb 作为数据库,我们使用 liquibase 来管理版本等。我们在一个文件中编写变更集,为 voltdb 我们使用 RunAlways.xml 包含以下步骤的文件 删
我尝试将 UUID 添加到用户模型上的 UUID 数组属性,但它返回“前提条件失败 - id.exists”。我在数据库上使用更新而不是创建或保存。使用 PostgreSQL 数据库。错误在 Flue
使用 @Nonnull 注释的参数然后使用 Preconditions.checkNotNull() 检查是否有意义? 它们有什么区别?据我所知,使用 @Nonnull 只会指定一个契约(Contra
我有一个带有以下相关代码的 Python Eve 应用程序: def handle_user_update(request, lookup): if request and request.data:
当使用“If-Match” header 执行 PUT 或 DELETE 时,如果客户端发送的 ETag 指示过时,我想返回整个最新实体而不是仅仅返回 412 (包括 HTTP header 中的新
我正在浏览 Guava 代码库和 in Preconditions source there is some explanation如下引用: All recent hotspots (as of 2
我正在尝试使用 python mechanize 模块在网站上自动化一个过程。 使用以下代码,我将刷新站点,直到找到我想要关注的链接: for link in br.links
我收到以下错误: java.lang.IllegalArgumentException at com.google.api.client.repackaged.com.google.commo
我想在我的应用程序的方法中添加字段验证(例如字段不为空且为正)。 private void assertionTest(Integer i) { // want to first assert
我正在使用以下查询从 Google 数据存储区检索一些实体: var query = datastore.createQuery(namespace,tableName); query.select
我是一名优秀的程序员,十分优秀!