与Collections.emptyList()相比,Collections.EMPTY_LIST **失败**吗?

时间:2017-07-25 09:19:14

标签: java empty-list

我之前已经知道类似的事情,但我没有找到任何解释,为什么类型安全(由方法提供)在空的不可变列表中很重要。

尽管我总是试图使类型/泛型正确,但我想了解使用常量时的实际情况会导致该方法会阻止的错误。

我发现最糟糕的结果是该方法避免了a compilation error in specific cases,但是它只是避免了警告,根据我的理解,这在实践中并不是一件大事:虽然我不知道JVM的确切区别,我非常清楚地知道在编译时使用了泛型,然后类型被删除并被强制替换。

那么,要结束,EMPTY_LIST是一个坏主意(TM)的任何例子?

1 个答案:

答案 0 :(得分:1)

你是对的,没有使用EMPTY_LIST 本身的风险。但是,你会收到警告。忽略警告是一种风险,因为有一天你肯定会忽略一个不容忽视的警告。

您可以@SuppressWarnings,但是您可以将注释放在方法(甚至是类)上,然后又回到第一点。

或者您创建一个局部变量并对其进行注释。这非常冗长。

或者你创建了一个返回字段的小方法并对其进行注释。猜猜Collections.emptyList()做了什么。