我试图使代码遵循功能性编程范例,该范例非常严格地遵循不变性,但是我知道如何使数组更接近不变的唯一方法是使用
List<Integer> items = Collections.unmodifiableList(Arrays.asList(0,1,2,3));
我不确定这是否会使数组不可变或只是不可修改。如果上面的命令没有使数组不变,那将是什么?

最佳答案

  • 除了通过反射,您不能对基础数组(或Arrays.asList返回的列表)进行突变。但是,数组在这里并没有真正的意义。不要混淆数组和列表!
  • 自Java 9起,List.of(0, 1, 2, 3)实现了相同的功能。
  • 要执行产生新集合的操作,您必须经历streams。您可能还需要考虑第三方库,例如Guava (this link is to their immutable collections page)。甚至更好的PCollections,它仅提供不可变的集合,并且比Guava提供更多的功能实现。
  • 09-19 02:07