通过使ArrayList(或其他Collection)成为最终形式,我们可以获得哪些优点/缺点?我仍然可以将新元素添加到ArrayList中,删除元素并进行更新。但是,什么才是最终的效果呢?
但是,什么才是最终的效果呢?
这意味着您无法将变量重新绑定为指向其他 集合实例 :
final List<Integer> list = new ArrayList<Integer>();
list = new ArrayList<Integer>(); // Since `list' is final, this won't compile
出于风格考虑,我声明了大多数我不打算更改为的引用final
。
我仍然可以将新元素添加到ArrayList中,删除元素并进行更新。
如果需要,可以使用Collections.unmodifiableList()
以下方法防止插入,移除等:
final List<Integer> list = Collections.unmodifiableList(new ArrayList<Integer>(...));
问题内容: 我正在读一本关于Java的书,它说您可以将整个类声明为final。我想不出我会在哪里使用它。 我只是编程的新手,我想知道程序员是否真的在他们的程序上使用了它。如果他们这样做了,他们什么时候使用它,以便我可以更好地理解它,并知道何时使用它。 如果Java是面向对象的,并且您声明了一个类final,它是否会停止具有对象特征的类的想法? 问题答案: 如果他们这样做了,他们什么时候使用它,以便
问题内容: 6年前关闭。 有关匿名类的文档说明 匿名类无法在其封闭范围内访问未声明为final或有效地为final的局部变量。 我不明白变数为“有效的最终”是什么意思。有人可以提供一个示例来帮助我理解这意味着什么吗? 问题答案: 有效地最终意味着它在获得初始值之后永远不会改变。 一个简单的例子: 在这里,并没有声明为final,但是由于它从未更改,因此实际上被认为是 final 。 从Java 8
问题内容: 我在Linux机器上搜索,看到了这个typedef: 但是我找不到 定义。 问题答案: 维基百科的time_t文章对此有所启发。底线是C规范中不能保证的类型。 的数据类型是用于存储系统时间值所定义的ISO C库中的数据类型。这些值从标准 库函数返回。此类型是标准标头中定义的typedef。 ISO C将time_t定义为算术类型,但未指定任何特定类型 ,范围,分辨率或编码。还没有指定应
问题内容: 很抱歉在此处发布它,但是Google在搜索符号时做得很糟糕。 什么是“ |” 意思是: 问题答案: 它是管道符号。其分离的命令行(见关于两个节目中手册),并且所述第一程序的标准输出(在管的左轴)被连接到第二程序的标准输入(在管的RHS)。 例如: 为您提供了连接到计算机的人数或会话数量的计数(从中添加一个标题行)。折扣标题行: 输入to 来自,输出到to 。 底层系统调用配合使用,和系
我读到了这个关于不可变对象的问题,留下了一个关于不可变对象和final字段的问题: 为什么我们需要不可变类中的实例变量成为最终变量? 例如,考虑这个不可变类: 如果在上面的代码中没有设置方法,并且实例变量只在构造函数中设置,那么为什么需要将实例变量声明为final?