java – 为什么将{a,b,c}传递给方法不起作用?

我试图将初始化列表{…}传递给构造函数,但它不起作用.
当我在一个方法局部变量(int [])中声明它时,它可以完美地工作.

这是为什么?

public class QuickSort {
    int[] a;

    public QuickSort(int[] a) {
        this.a = a;
    }

    public static void main(String[] args) {
        // ###################
        // ###    WORKS     ##
        // ###################
        int[] a = {8,12,79,12,50,44,8,0,7,289,1};
        QuickSort sort = new QuickSort(a);

        // ###################
        // ### DOESN'T WORK ##
        // ###################
        //QuickSort sort = new QuickSort({8,12,79,12,50,44,8,0,7,289,1});
    }
}

解决方法:

当声明一个int []并分配{1,2,3}时,编译器知道你要创建一个int [],就像它拼写出来一样.

在后一种情况下,您将数组直接粘贴到方法调用中,您必须使用

QuickSort sort = new QuickSort(new int[] {8,12,79,12,50,44,8,0,7,289,1});

告诉编译器你的数组是什么.

上一篇:c – 成员必须具有class / struct / union


下一篇:java – 点运算符`.`(在泛型参数之前)是什么意思?