java - Java Base API 中最具误导性的方法是什么?

标签 java methods naming-conventions

我最近试图将字符串文字转换为 boolean,当方法 boolean Boolean.getBoolean(String name)弹出自动完成窗口。紧随其后还出现了另一种方法(boolean Boolean.parseBoolean(String s)),这导致我搜索以找出这两者之间的区别,因为它们似乎都做同样的事情。

事实证明,Boolean.getBoolean(String name) 真正做的是检查是否存在给定名称的 System 属性 (!)如果它的值为 true。我认为这是非常具有误导性的,因为我绝对不期望 Boolean 的方法实际上正在调用 System.getProperty ,并且仅仅通过查看方法签名,它确实看起来(至少在我看来)应该用于将 String 解析为 boolean。当然,javadoc 清楚地说明了这一点,但我仍然认为该方法的名称具有误导性,而且它不在正确的位置。其他原始类型包装器,例如 Integer 也有类似的方法。

此外,属于基本 API 似乎不是一个非常有用的方法,因为我认为像 -Darg=true 这样的东西并不常见。也许这是一个 Java 职位面试的好问题:“Boolean.getBoolean("true") 的输出是什么?”。我相信这些方法更合适的地方是 System类,例如,getPropertyAsBoolean;但同样,我仍然认为没有必要在基础 API 中包含这些方法。将它们放在像 Properties 类这样的东西中是有意义的,在其中进行这种类型的转换非常常见。

你怎么看这一切?另外,如果你知道还有另一种“尴尬”的方法,请发布。

注意 我知道我可以使用 Boolean.valueOfBoolean.parseBoolean 将字符串文字转换为 boolean,但我只是想讨论一下 API 设计。

最佳答案

URL equals() 方法比较 IP 地址,使用网络连接,是阻塞操作!

来自 javadocs:

Two hosts are considered equivalent if both host names can be resolved into the same IP addresses; else if either host name can't be resolved, the host names must be equal without regard to case; or both host names equal to null.

Since hosts comparison requires name resolution, this operation is a blocking operation.

Note: The defined behavior for equals is known to be inconsistent with virtual hosting in HTTP.

改用 URI。

关于java - Java Base API 中最具误导性的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291984/

相关文章:

java - 解码 "Type mismatch: cannot convert from XmlAccessType to AccessType "时出错

go - Go包命名约定背后的想法是什么?

java 日期问题

java - perl Inline::Java 与 JAXB

java - 是否有适用于 Mac OSX 的 native Java AOT?

rest - 混合使用REST API的复数形式和单数形式来表示不同的资源?

android - 查看子类命名约定 - Android

java - 在Java中,可以发现当前执行的方法是什么?

c - 如何从 Objective-C 方法返回 C 指针引用?

iphone - Objective C 方法和语法