【问题标题】:Can Collections.EMPTY_LIST **fail** compared to Collections.emptyList()?与 Collections.emptyList() 相比,Collections.EMPTY_LIST **fail** 可以吗?
【发布时间】:2017-07-25 09:19:13
【问题描述】:

我知道以前有人问过类似的问题,但我没有找到任何解释为什么类型安全(由方法提供)在一个空的不可变列表中很重要。

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

我发现的最糟糕的后果是该方法避免了a compilation error in specific cases,否则它只是避免了警告,这(根据我的理解)在实践中并不是什么大问题:虽然我不知道确切的区别JVM,我大致知道泛型是在编译时使用的,然后类型被擦除并替换为强制转换。

所以,总结一下,EMPTY_LIST 是一个坏主意 (TM) 的任何示例?

【问题讨论】:

    标签: java empty-list


    【解决方案1】:

    你说得对,使用EMPTY_LIST 本身没有任何风险。但是,您会收到警告。忽略警告是一种风险,因为有一天您肯定会忽略不想被忽略的警告。

    你可以@SuppressWarnings,但是你要么把注解放在你的方法(甚至类)上,然后你就回到第一点。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多