gpt4 book ai didi

java - 为什么 Google Precondition Library 中的 Checkers 接受对象而不是字符串

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:28 25 4
gpt4 key购买 nike

为什么 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com