作为一个特例List.of(…)或Collections.unmodifiableList() -什么是指向一个的首选的Java 9路 空 和 不可变 列表?
继续写
Collections.emptyList();
或切换到
List.of();
Java 9指向空且不可变列表的首选方式是什么?
差异相当细微,因此“首选”取决于您要实现的目标。一些行为上的差异:
List.of``contains(null)
如果调用由于某种奇怪的原因而发生,将引发异常。emptyList()
JDK 8及更高版本,但不能反序列化List.of
。用术语或表达方式来说,您想要一个空列表emptyList()
可能看起来更好,但这只是一个临时约定。如果开发人员开始使用List.of()
(比短得多Collections.emptyList()
),那么它将成为一种已知和被接受的方式,这只是新的。如果您考虑一下,我们会使用某些构造,这些构造并不总是传达它们自己所做的事情,但是我们已经习惯了它们。
因此,没有严格的首选方法。如果行为无关紧要,请使用所需的任何内容。
问题内容: 如果您有实例,可以继续写: 或切换至: 实例化对性能(在内存和运行时方面)的最初影响是什么?该变体有运行时优势吗? 问题答案: 这并不是一个很好的比较,因为这些方法做的事情不同: 创建一个不可修改的视图。它 不是 一成不变的,因为如果您要更改原始的后备集合(在您的示例中),则它会更改。 另一方面,创建一个不变的副本。更改原始列表不会影响它。 从性能的角度来看,创建不可修改的包装器显然更
问题内容: Java 9引入了新的列表工厂方法: 上一个选项和新选项之间有什么区别?也就是说,这之间有什么区别: 还有这个: 问题答案: 返回可变的列表,而所返回的列表是不可变的: 允许null元素,而不允许: 行为与null不同: 返回所传递数组的视图,因此对数组的更改也将反映在列表中。对于这是不正确的:
我在返回时发现了错误。Java似乎不知道如何解析方法中的方法。
我正在使用springboot和gradle,我正在尝试在控制器中执行下面的代码。 在编译时,我得到以下错误 错误:找不到symbol=List.of(“水星”,“金星”,“地球”,“火星”,^symbol:方法of(String,String,String,String,String,String,String,String,String,String) 位置:接口列表 我的分级档案 sourc
这是一种方法: 我对lambda表达式的理解很差,“expression”部分必须返回一个值,在这种情况下,它必须是字符串 So<代码>()- 既然如此,为什么要用lambda表达式呢? 为什么不直接列出。“已读”?