不允许将数组初始值设定项作为方法参数传递



当我试图将数组初始值设定项作为方法参数传递时,我收到一个错误消息"此处不允许使用数组初始值设置项"。

methodTakingArrayArgument({0,0,0})

但是,当显式提及该类型时,构造会起作用。

methodTakingArrayArgument(new int[]{0,0,0})

是否有不支持此构造的原因?甲骨文网站上似乎没有任何文档提到这一点。

编辑:我知道用Java创建数组有固定数量的方法。数组初始值设定项构造在Java中作为一等公民得到支持是很自然的,就像在typescript等语言中一样。

正如其中一个答案所指出的,数组初始值设定项不是一个有效的表达式,这就是为什么它不能传递给方法的原因。

Java语言规范是此类问题的最终权威:第15章一般表达式、§15.12方法调用表达式和§15.10.1。数组创建表达式和10.6。特别是数组初始化程序。简而言之,你会发现:

  1. 方法调用的参数列表由一系列逗号分隔的表达式组成
  2. new int[]{0,0,0}arrayCreationExpression,它又是expression的一种类型,因此可以作为方法调用中的参数
  3. {0,0,0}数组初始化器,它本身不是表达式并且因此在方法调用中用作参数是不合法的

最新更新