关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
6年前关门了。
改进这个问题
在编写代码时,我使用了 Collections
遇到了一件我觉得很奇怪的事。我想知道为什么以前从来没有问过这个问题,尽管我所指的这个类和方法是从Java1.4开始的
/**
* Returns an array list containing the elements returned by the
* specified enumeration in the order they are returned by the
* enumeration. This method provides interoperability between
* legacy APIs that return enumerations and new APIs that require
* collections.
*
* @param e enumeration providing elements for the returned
* array list
* @return an array list containing the elements returned
* by the specified enumeration.
* @since 1.4
* @see Enumeration
* @see ArrayList
*/
public static <T> ArrayList<T> list(Enumeration<T> e) {
ArrayList<T> l = new ArrayList<>();
while (e.hasMoreElements())
l.add(e.nextElement());
return l;
}
这就是我正在经历的方法。我真的很想知道为什么api写得不干净(我想)。
根本没有 null
检查输入集合,这是一个标准API应该考虑的东西。
创建的 ArrayList
存储在的引用中 ArrayList
,它通常会存储在 List
参考文献。返回类型也是如此。
正如javadoc已经指出的那样,我不会在javabug repo中对此提出bug,这些情况是已知的。
有什么建议吗?
1条答案
按热度按时间rks48beu1#
null检查将检查null,如果为null,则抛出nullpointerexception。但这是多余的呼吁
e.hasMoreElements()
如果e
为空。设计器选择具体说明方法返回的列表类型。他希望显式地将枚举的一个副本生成一个新的arraylist,并返回一个arraylist。这就阻止了java的未来版本返回另一个列表实现,但这是不太可能发生的,它向调用者提供了更多信息,调用者可以依赖这个列表作为arraylist。这根本没有错。