如何在java方法中将数组作为参数传递?

Posted

技术标签:

【中文标题】如何在java方法中将数组作为参数传递?【英文标题】:How to pass array as parameter in java method? 【发布时间】:2012-07-05 03:52:16 【问题描述】:

代码:

Object[] a= myObject;
someMethod(Object ...arg);

当我尝试时:

someMethod ( myObject );

我在 Eclipse 中收到错误。

但是当:

someMethod ( a );

一切正常。 为什么会有这种差异? 谢谢。

【问题讨论】:

【参考方案1】:

因为 myObject 语法是special syntactic sugar,它仅适用于初始化数组变量时。这是因为赋值本身缺少类型信息;但在赋值的特殊情况下,类型完全是从变量中推断出来的。

在第一个示例中,编译器知道您正在分配给a(这是一个Object[]),因此允许使用此语法。在后者中,您没有初始化变量(并且由于 Java 类型推断的弱点,它甚至也无法完全计算出参数分配的上下文)。所以它不会知道数组应该是什么类型,即使它可以明确地确定这是你想要做的(而不是例如声明一个块)。

打电话

someMethod ( new Object[]  myObject  )

如果您想在不使用变量的情况下就地定义数组,则可以使用。


虽然上面回答了您的问题,但我注意到您调用的方法是varargs,而不是明确需要数组参数。所以在这种情况下,你可以简单地调用

someMethod(myObject);

【讨论】:

【参考方案2】:
someMethod(new Object[]  "" );

应该做的伎俩!

【讨论】:

以上是关于如何在java方法中将数组作为参数传递?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中将数组作为参数传递时创建数组

如何在 Java 中将类型作为方法参数传递

在 PHP 中将数组作为参数而不是数组传递

在c#中将引用数组作为参数传递[重复]

如何在Java中将泛型对象作为方法参数传递? [复制]

如何在Java中将类作为参数传递?