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

用户710818:

码:

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

当我尝试:

someMethod ( {myObject} );

我在Eclipse中收到错误。

但当:

someMethod ( a );

一切都好。为什么会有这种差异?谢谢。

安德烈·道尔(Andrzej Doyle):

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

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

呼唤

someMethod ( new Object[] { myObject } )

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


虽然上面的内容按要求回答了您的问题,但我注意到您正在调用的方法是varargs,而不是显式要求使用数组参数。因此,在这种情况下,您只需致电

someMethod(myObject);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将对象数组作为参数传递

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

如何在Java中将新数组作为参数传递给方法?

如何在Java中将通用pbject作为方法参数传递?

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

如何在soap请求中将结构数组作为参数传递?

如何在C中将连续数组作为参数传递?

如何在ruby中将数组作为单个参数传递?

如何在VB宏中将数组作为参数传递

如何在Kendo数据源读取方法中将数组对象作为参数传递?

如何在Python中将方法作为参数传递

如何在Swift的方法中将字典作为参数传递?

如何在协议的可选方法中将枚举作为参数传递

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

如何在Javascript中将对象的方法作为参数传递

如何在“dig”等方法中将参数作为变量传递

如何在方法中将密码作为参数传递

如何在Python中将默认方法作为参数传递

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

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

如何在Java中将函数作为参数传递给Callable

如何在Java中将函数作为参数传递以多次运行

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

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

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

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

在方法中将数组作为参数传递

如何在Java中将方法名称作为参数传递

如何在Java中将泛型列表类作为参数传递给泛型方法?