2012-07-04 41 views

Respuesta

20

Porque la sintaxis { myObject } es special syntactic sugar que solo se aplica cuando se inicializa una variable de matriz. Esto se debe a que, por sí solo, la tarea carece de información de tipo; pero en el caso especial de asignación, el tipo se deduce completamente de la variable.

En el primer ejemplo, el compilador sabe que está asignando a a (que es Object[]), por lo que esta sintaxis está permitida. En este último caso, no está inicializando una variable (y debido a una debilidad en la inferencia de tipos de Java, ni siquiera resolverá completamente el contexto de la asignación de parámetros). Por lo tanto, no sabría de qué tipo debería ser la matriz, incluso si pudiera determinar inequívocamente que eso es lo que intenta hacer (en lugar de, por ejemplo, declarar un bloqueo).

Calling

someMethod (new Object[] { myObject }) 

funcionaría si se quiere definir la matriz en el lugar sin necesidad de utilizar una variable.


Si bien lo anterior responde a su pregunta, tal como solicitó, noto que el método que está llamando es varargs en lugar de exigir explícitamente un parametro matriz. Entonces, en este caso, simplemente puede llamar al

someMethod(myObject); 
+0

Agradable, claro, no excesivamente largo, hace el trabajo. +1 –

6
someMethod(new Object[] { "" }); 

¡Debería hacer el truco!

Cuestiones relacionadas