最近我试图把一个字符串转换成boolean
类型,自动完成窗口出现了方法boolean Boolean.getBoolean(String name)
。随后,另外一个方法boolean Boolean.parseBoolean(String s)
也跟着出现了。这让我搜索了解它们之间的区别,因为它们看起来都是做同样的事情。
事实证明,Boolean.getBoolean(String name)
真正做的是检查给定名称的System
属性是否存在且其值为true
。我认为这很误导人,因为我肯定不希望Boolean
的一个方法实际上调用了System.getProperty
,而且仅仅通过观察方法签名,它看起来(至少对我来说)应该用于将String
解析为boolean
。当然,javadoc清楚地说明了这一点,但我仍然认为该方法的名称具有误导性,并且不在正确的位置。其他基本类型包装器,例如Integer
也有类似的方法。
此外,我认为像-Darg=true
这样的东西并不常见,因此它似乎不是属于基本API中非常有用的方法。也许这是一个适合Java职位面试的好问题:“Boolean.getBoolean(“true”)
”的输出是什么?我认为这些方法更适合放在System
类中,例如getPropertyAsBoolean
;但是,我仍然认为将这些方法放入基本API中是不必要的。将它们放在诸如Properties
类之类的地方会更合理,因为在这种情况下进行此类型的转换非常常见。
您对此有何看法?另外,如果您还知道其他“棘手”的方法,请分享出来。
N.B. 我知道可以使用Boolean.valueOf
或Boolean.parseBoolean
将字符串文字转换为boolean
,但我只是想讨论API设计。