Object[] a={ myObject};
someMethod(Object ...arg);
当我尝试
:
someMethod ({myObject});
我收到在Eclipse中的错误。
但当:
someMethod (a);
一切ok。 为什么这种差异? 谢谢。
Object[] a={ myObject};
someMethod(Object ...arg);
当我尝试
:
someMethod ({myObject});
我收到在Eclipse中的错误。
但当:
someMethod (a);
一切ok。 为什么这种差异? 谢谢。
因为{ myObject }
语法是special syntactic sugar只适用于初始化数组变量。这是因为它自己的任务缺乏类型信息;但是在赋值的特殊情况下,类型是从变量中完全推断出来的。
在第一个示例中,编译器知道您正在分配给a
(这是一个Object[]
),因此该语法是允许的。在后者中,你不是初始化一个变量(并且由于Java类型推断的弱点,它甚至不能完全解决参数赋值的上下文)。所以它不知道数组应该是什么类型,即使它可以毫不含糊地确定这就是你想要做的(而不是像声明一个块)。
调用
someMethod (new Object[] { myObject })
会工作,如果你想定义就地阵列,而无需使用一个变量。
虽然上述回答得问你的问题,我注意到你正在调用方法是varargs而非明确要求数组参数中。因此,在这种情况下,您可以简单地致电
someMethod(myObject);
someMethod(new Object[] { "" });
应该诀窍!
尼斯,明确,不过长,完成工作。 +1 –