当前位置: 首页 > 知识库问答 >
问题:

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

穆嘉
2023-03-14

声明集合最终不会抑制其任何功能(仍然可以添加删除清除get等),但允许编译器进行更多优化。

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

共有2个答案

咸弘雅
2023-03-14

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

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

您应该只在需要时使用最终。有很多情况下您确实需要,但默认情况下您不应该使用最终

周和歌
2023-03-14

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

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

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

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

 类似资料:
  • 问题内容: 我正在尝试使用 BufferedReader 通过URL上的InputStreamReader 从Web文档中读取文本(到某些Apache服务器上的文件)。 现在,这很好。但是显然,我希望读者不要只读一行,而应该读文件中的所有行。 查看BufferedReader API,以下代码应做到这一点: 即在有更多行时读取所有行,在没有更多行时停止。但是,此代码不起作用-读者 永远不会 报告

  • 问题内容: 我是OOP范式的新手,所以可能对此问题有一个简单的解释… 您是否总是需要在类中声明公共对象范围的变量?例如: 在此代码中,即使是唯一声明的变量,也一样可访问和可用-似乎就像我将其声明为public一样。 如果未声明的类变量始终可以这样访问,那么将它们全部预先声明的意义何在? 问题答案: 该变量不是未初始化的,只是未声明的。 在类定义中声明变量是提高可读性的一种方式。另外,您可以设置可访

  • 问题内容: 我已经阅读了文档。但我仍然不确定何时不需要将其设置为。在下面的代码中,如果将其设置为,则根本看不到标题。如果我将其保留为,那么一切都很好。 View调试层次结构中的以下内容将给出警告“ 宽度 和 位置 不明确”。 我以为只要需要修改代码中的任何内容,都必须设置为。 如果您需要删除其所有约束,然后将其设置为,然后添加所需的内容,则可能是更正确的说法,在这种情况下,您需要为所有四个方面添加

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 我试图找到为什么不能将类创建为静态类的原因?喜欢: 问题答案: 在Java中,关键字通常将一个方法或字段标记为不存在,而不是每个类实例一次,而是一次。一个类一旦存在就已经存在,因此实际上,所有类都以这种方式是“静态的”,并且所有对象都是该类的实例。 确实对 内部 类具有含义,这是完全不同的:通常,内部类实例可以访问与其绑定的外部类实例的成员,但是如果内部类为,则它没有这样的引用并且可以