【问题标题】:When should a Java collection not be declared final?什么时候不应该将 Java 集合声明为 final?
【发布时间】:2018-04-10 15:34:41
【问题描述】:

声明集合final 不会抑制其任何功能(仍然可以addremoveclearget 等),但允许编译器进行更多优化。

在什么情况下最好更改引用(不允许使用 final)而不是使用现有集合的方法?

【问题讨论】:

标签: java collections final


【解决方案1】:

如果您希望以后修改它的值,则不应声明变量final。对于集合,如果您打算替换对集合的整个引用,则可以不将其标记为 final

// Plan to change collection
List<Integer> intVals = new ArrayList<>();

// later in your code
intVals = getOtherValuesInstead();

如果您绝对想要更改引用,您应该声明它final。这是更典型的方法;正如您正确描述的那样,由于您可以向集合添加值无论如何,因此您不应该发现自己处于必须更改其引用的情况。

【讨论】:

    【解决方案2】:

    什么时候应该将 Java 集合声明为 final?

    几乎在所有情况下,除非您特别想确定对象永远不会被更改。

    您应该在需要时使用final。在很多情况下你确实需要但你不应该默认使用final

    【讨论】:

    • 为什么?海事组织这完全是基于意见的,没有好的或坏的做法。我遇到过这样或那样做的程序员。只要我不需要任何不同的东西,我个人就会尽可能使用最严格的修饰符。所以finalprivate 无处不在,直到我需要不同的东西。
    • @Zabuza - 你是对的 - 它明显基于意见。恕我直言,在不必要的时候使用final 只是混乱。我已经看到在 all 方法 final 中创建 all 参数的代码,这太可怕了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多