为什么不能在 Java 构造函数中使用字段的速记数组初始化?

2022-09-02 02:51:10

举个例子:

private int[] list;

public Listing() {
    // Why can't I do this?
    list = {4, 5, 6, 7, 8};

    // I have to do this:
    int[] contents = {4, 5, 6, 7, 8};
    list = contents;
}

为什么我不能使用速记初始化?我能想到解决这个问题的唯一方法是制作另一个数组并设置到该数组。list


答案 1

在定义行上定义数组时,它假定它知道类型是什么,因此是冗余的。但是,当您使用赋值时,它不会假设它知道数组的类型,因此您已经指定了它。new int[]

当然,其他语言对此没有问题,但在Java中,区别在于您是否在同一行上定义和初始化字段/变量。


答案 2

尝试。list = new int[]{4, 5, 6, 7, 8};