You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

包含int数组的类数组编译时初始化:Java能否实现类似C++的效果?

结论

可以实现,Java虽然没有原生结构体类型,但通过类配合数组静态初始化语法,完全可以达到和示例C++代码一致的初始化效果。


具体实现步骤

  1. 首先定义和C++结构体S功能等价的Java类,添加构造方法方便初始化:
class S {
    public int[] arr;
    public int x;

    public S(int[] arr, int x) {
        this.arr = arr;
        this.x = x;
    }
}
  1. 直接使用数组静态初始化语法完成赋值,效果和C++示例完全一致:
S[] s = {
    new S(new int[]{1, 2, 3}, 111),
    new S(new int[]{2, 3, 4}, 222),
    new S(new int[]{3, 4, 5}, 333)
};

补充说明

  • 如果你使用Java 9及以上版本,也可以用List.of方法实现更简洁的不可变集合初始化,需要数组的话再调用toArray()方法转换即可:
    // Java 9+ 写法
    List<S> sList = List.of(
        new S(new int[]{1, 2, 3}, 111),
        new S(new int[]{2, 3, 4}, 222),
        new S(new int[]{3, 4, 5}, 333)
    );
    
  • Java的数组是引用类型,上述初始化逻辑如果声明为static final修饰的类成员,JVM会在类加载阶段就完成初始化,运行时性能和C++的编译期初始化差异极小。

内容的提问来源于stack exchange,提问作者user93353

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 22:36:04