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 –