当前位置: 首页 > 面试题库 >

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

左翰海
2023-03-14
问题内容

码:

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

当我尝试:

someMethod ( {myObject} );

我在Eclipse中收到错误。

但当:

someMethod ( a );

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


问题答案:

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

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

呼唤

someMethod ( new Object[] { myObject } )

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

虽然上面的内容按要求回答了您的问题,但我注意到您正在调用的方法是
varargs,

而不是显式要求使用数组参数。因此,在这种情况下,您只需致电

someMethod(myObject);


 类似资料:
  • 问题内容: 在Java中,如何将一个函数作为另一个函数的参数传递? 问题答案: Java 8及以上 如果你的类或接口只有一个抽象方法(有时称为SAM type),则使用Java 8+ lambda表达式,例如: 然后可以在使用MyInterface的任何地方替换lambda表达式: 例如,你可以非常快速地创建一个新线程: 并使用方法引用语法使其更加清晰: 如果没有 lambda表达式,则最后两个示

  • 我有一个Kotlin代码: 现在我想从Java类调用这个方法。我不知道该怎么称呼这个。这是我试过的 但它显示了以下错误。

  • 我有静态方法在我的类 这就是定义 这里用的是 这是我得到的一个错误 E0167类型为“void(TV_DepthCamAgent::)(int count,int copied_file)”的参数与类型为“void()(int,int)”的参数不兼容 错误C3867“TV_DepthCamAgent::progress_callback”:非标准语法;使用' 我做错了什么?

  • 在Python中,我可以很容易地将函数作为参数传递,并在另一个函数内部执行。

  • 问题内容: 我想使用数组作为参数调用一个函数: 有路过的内容的一种更好的方式进入? 问题答案: const args = [‘p0’, ‘p1’, ‘p2’]; call_me.apply(this, args); 请参阅MDN文档。 如果环境支持ECMAScript6,则可以改用传播参数:

  • 我正在编写一个方法,如果我想将一个类传递给一个方法,其中代码的一部分包括检查对象是否属于某种类型。这就是我想要的(但显然不行): 关于如何做到这一点有什么提示吗?谢谢!