Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不允许将数组初始值设定项作为方法参数传递_Java_Arrays_Initialization - Fatal编程技术网

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

Java 不允许将数组初始值设定项作为方法参数传递,java,arrays,initialization,Java,Arrays,Initialization,当我试图将数组初始值设定项作为方法参数传递时,我收到一个错误消息“此处不允许数组初始值设定项” methodtakingarayargument({0,0,0}) 但是,当显式提到类型时,构造就起作用了 methodtakingarayargument(新int[]{0,0,0}) 是否有不支持此构造的原因?oracle网站上似乎没有提到这一点的文档 编辑: 我知道在Java中创建数组有固定数量的方法。数组初始值设定项构造在Java中作为一级公民受到支持感觉很自然,就像在typescript这样

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

methodtakingarayargument({0,0,0})

但是,当显式提到类型时,构造就起作用了

methodtakingarayargument(新int[]{0,0,0})

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

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

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

是这些问题的最终权威:一般而言,尤其是。 简而言之,您将发现:

  • 方法调用的参数列表由一系列逗号分隔的表达式组成
  • newint[]{0,0,0}
    是一个arrayCreationExpression,它又是一种表达式类型,因此允许在方法调用中作为参数
  • {0,0,0}
    是一个arrayInitializer,它本身不是一个表达式,因此在方法调用中用作参数是不合法的
  • 我不认为除了Java不支持这种语法之外还有什么“原因”。(可能有语法或类型歧义的原因,但这似乎不太可能被记录在案。)