Wie kommt es, dass der erste Aufruf von someMethod nicht kompiliert wird, ohne dass explizit angegeben wird, dass es String [] ist?Java-Array-Initialisierung innerhalb der Argumentliste
Es ist in Ordnung, einen Array-Initialisierer zu verwenden, um ein Array String [] zu erstellen, aber Sie können damit kein Argument übergeben. Werden die geschweiften Klammern auf andere Weise für die Übergabe von Argumenten verwendet, die entgleisen, wie ich das erwarten würde?
public void someMethod(String[] arr){
//do some magic
}
public void makeSomeMagic(){
String[] arr = {"cat", "fish", "cow"};
//Does not compile!
someMethod({"cat", "fish", "cow"});
//This compiles!
someMethod(new String[]{"cat", "fish", "cow"});
//This compiles!
someMethod(arr);
}
Der Compiler-Fehler ist folgende:
Verfahren irgendeinemethode (String []) in der Art Moo nicht anwendbar für die Argumente ist (String, String, String)
Es ist nur zur Deklarationszeit erlaubt. Es ist eine Syntax-Sache –