2012-07-04 24 views

Antwort

20

Da die { myObject } Syntax special syntactic sugar ist, die nur gilt, wenn Sie eine Array-Variable initialisieren. Dies liegt daran, dass die Zuweisung keine Typinformation enthält; aber im speziellen Fall der Zuweisung wird der Typ vollständig aus der Variablen abgeleitet.

Im ersten Beispiel weiß der Compiler, dass Sie a zuweisen (also Object[]), daher ist diese Syntax zulässig. In letzterem initiieren Sie keine Variable (und aufgrund einer Schwäche in der Typinferenz von Java wird auch der Kontext der Parametrierung nicht vollständig ausgearbeitet). Es würde also nicht wissen, welchen Typ das Array haben soll, selbst wenn es eindeutig bestimmen könnte, dass dies das ist, was Sie versuchen (im Gegensatz zum Deklarieren eines Blocks).

Aufruf

someMethod (new Object[] { myObject }) 

funktionieren würde, wenn Sie das Array an Ort und Stelle definieren möchten, ohne eine Variable.


Während die oben beantwortet Ihre Frage gefragt, merke ich, dass die Methode Sie aufrufen varargs ist nicht explizit ein Array Paramter erfordern. Also in diesem Fall können Sie einfach anrufen

someMethod(myObject); 
+0

Schön, klar, nicht zu lange, macht den Job erledigt. +1 –

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

Sollte der Trick!

Verwandte Themen