相关疑难解决方法(0)

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

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.valueOfBoolean.parseBoolean将字符串文字转换为a boolean,但我只是想讨论API设计.

java methods naming-conventions

36
推荐指数
12
解决办法
3165
查看次数

为什么在Java中从List中删除原始类型时没有Autoboxing?

我有以下代码抛出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方法中它不是吗?

java autoboxing list

4
推荐指数
2
解决办法
214
查看次数

Java:替换ArrayList中不允许的ArrayList cos原语类型?

ArrayList,source中不允许使用原始类型.部分解决方案:您可以将诸如int之类的prim.types包装到Integer中以形成一个额外的类但是副作用.我想索引数据,是否有一些替代ArrayList允许原始类型?

java arraylist primitive-types

1
推荐指数
1
解决办法
4120
查看次数