首页 > 解决方案 > Java 和函数式编程范式 - 如何使我的数组不可变

问题描述

我正在尝试编写遵循函数式编程范式的代码,该范式非常虔诚地遵循不变性,但我知道如何使我的数组更接近不可变的唯一方法是使用

List<Integer> items = Collections.unmodifiableList(Arrays.asList(0,1,2,3));

我不确定这是否使数组不可变或只是不可修改。如果上面的命令不能使数组不可变怎么办?

标签: javaarrayscollectionsfunctional-programmingimmutability

解决方案


  1. Arrays.asList除了反射之外,您不能改变底层数组(或返回的列表)。但是,数组在这里并不重要。不要混淆数组和列表!

  2. 从 Java 9 开始,List.of(0, 1, 2, 3)实现了相同的功能。

  3. 要执行生成新集合的操作,您必须通过。您可能还需要考虑第三方库,例如Guava(此链接指向他们的不可变集合页面)。甚至更好的 PCollections,它只提供不可变集合和比 Guava 更多的功能实现。


推荐阅读