collections类中的方法对输入集合没有空检查

hmmo2u0o  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(274)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。

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,这些情况是已知的。
有什么建议吗?

rks48beu

rks48beu1#

null检查将检查null,如果为null,则抛出nullpointerexception。但这是多余的呼吁 e.hasMoreElements() 如果 e 为空。
设计器选择具体说明方法返回的列表类型。他希望显式地将枚举的一个副本生成一个新的arraylist,并返回一个arraylist。这就阻止了java的未来版本返回另一个列表实现,但这是不太可能发生的,它向调用者提供了更多信息,调用者可以依赖这个列表作为arraylist。这根本没有错。

相关问题