将Array作为参数传递给{}

Luk*_*lor 2 java

我可以像这样设置一个数组:

Object[] objects = {new Object()};
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个方法:

public void setObject(Object[] objects) {

}
Run Code Online (Sandbox Code Playgroud)

我做不到以下事情:

setObject({new Object()});
Run Code Online (Sandbox Code Playgroud)

为什么是这样?为什么{new Object()}不足以作为参数但足以初始化Object[]数组?

Lui*_*oza 8

您可以传递一个匿名数组:

setObject(new Object[] { new Object() });
Run Code Online (Sandbox Code Playgroud)

请注意,语法{ new Object() }在其声明初始化数组时起作用.例如:

Object[] arr = { new Object() };
Run Code Online (Sandbox Code Playgroud)

声明数组后,这不起作用:

Object[] arr;
//uncomment below line and you'll get a compiler error
//arr = { new Object() };
arr = new Object[] { new Object() };
Run Code Online (Sandbox Code Playgroud)