温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java不可变数组如何建

发布时间:2026-10-22 08:00:32 来源:亿速云 阅读:85 作者:小樊 栏目:编程语言

在 Java 里**“数组本身都是可变的”(长度是固定的,但内容可以改)。
如果你说的是
“不可变数组 / 只读数组”**,常见有下面几种做法:


1️⃣ 使用 List.of(...)(Java 9+,推荐)

得到的是不可变集合,不是数组,但最常用。

List<String> list = List.of("a", "b", "c");
// list.add("d"); // ❌ 报错

如果需要数组:

String[] arr = List.of("a", "b", "c").toArray(new String[0]);

⚠️ 注意:toArray 得到的数组仍然可以改内容

arr[0] = "x"; // ✅ 可以

2️⃣ 使用 Collections.unmodifiableList(Java 8 及以前)

List<String> list =
    Collections.unmodifiableList(Arrays.asList("a", "b", "c"));
// list.add("d"); // ❌ 报错

⚠️ 底层数组仍可改:

String[] arr = list.toArray(new String[0]);
arr[0] = "x"; // ✅ 可以

3️⃣ 真正“内容不可改”的数组(封装)

Java 没有原生不可变数组,需要自己封装:

public final class ImmutableArray {
    private final int[] data;

    public ImmutableArray(int[] src) {
        this.data = Arrays.copyOf(src, src.length);
    }

    public int get(int i) {
        return data[i];
    }

    public int length() {
        return data.length;
    }
}

使用:

ImmutableArray arr = new ImmutableArray(new int[]{1,2,3});
// arr.data[0] = 10; // ❌ 编译错误

4️⃣ 使用第三方库(推荐生产环境)

  • Guava
ImmutableList<String> list =
    ImmutableList.of("a", "b", "c");
  • Apache Commons
String[] arr = ArrayUtils.toArray("a", "b", "c");

✅ 总结

方式 是否真正不可变 说明
数组 ❌ Java 数组天生可变
List.of ✅(集合) 推荐
unmodifiableList ✅(集合) Java 8
自定义封装 ✅ 最安全
Guava ✅ 最成熟

如果你能说下 Java 版本 / 使用场景(并发?配置?),我可以给你更合适的方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手