boolean当方法boolean Boolean.getBoolean(String name)弹出自动完成窗口时,我最近尝试将字符串文字转换为a .之后还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类的东西中是有意义的,这种类型的转换很常见.
你觉得这一切怎么样?此外,如果你知道另一个"尴尬"的方法,请发布它.
NB我知道我可以使用Boolean.valueOf或Boolean.parseBoolean将字符串文字转换为a boolean,但我只是想讨论API设计.
我有以下代码抛出IndexOutOfBoundsException异常:
List<Character> list = new ArrayList<>();
char c = 'a';
list.add(c);
list.remove(c); // gets fixed by passing list.remove((Character)c);
Run Code Online (Sandbox Code Playgroud)
我知道发生这种情况是因为在移除时不会发生AutoBoxing,而在添加元素时会发生AutoBoxing.我的问题是为什么?添加从char到Character的AutoBoxing是可行的,而在remove方法中它不是吗?
ArrayList,source中不允许使用原始类型.部分解决方案:您可以将诸如int之类的prim.types包装到Integer中以形成一个额外的类但是副作用.我想索引数据,是否有一些替代ArrayList允许原始类型?