gpt4 book ai didi

java - 可变数量参数不允许使用旧数组表示法

转载 作者:行者123 更新时间:2023-11-30 06:05:52 25 4
gpt4 key购买 nike

我出于好奇而问这个问题,因为我在 StackOverflow 上没有找到针对此特定编译错误的问题:

Legacy array notation not allowed on variable-arity parameter

当我看到一些包含如下签名的代码时,我遇到了遗留符号:

private void a(int ints[]){/*...*/}

所以我尝试了一下,直到在以下示例中遇到编译错误。

// this method compiles as expected
private void method1(int[][] ints){ /*...*/ }

// this too
private void method2(int[]... ints){ /*...*/ }

// this does to, but makes use of legacy array notation
private void method3(int ints[][]){ /*...*/ }

// this still does, even when mixing up the notations
private void method4(int[] ints[]){ /*...*/ }

// this however fails to compile
private void method5(int... ints[]){ /*...*/ }

语言设计者决定以这种方式实现它是否有特定的原因?不允许使用旧数组表示法的可变参数?

NOTE: I understand the legacy notation

最佳答案

int[] aint a[] 是同一件事,

所以 1 ,3 和 4 是等价的。

在2中,你基本上是在说“我想要一个int[]类型的可变参数”

因此可以像 method2(new int[]{},new int[]{}) 那样调用。

在5中,int..告诉编译器它是一个int类型的可变参数,参数名称为ints[] ,这是无效的变量名称。

关于java - 可变数量参数不允许使用旧数组表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com