5 Stimmen

Warum ist varargs immer der letzte Parameter in einer Methodensignatur?

Warum muss varargs der letzte Parameter in der Methodensignatur sein?

Ich möchte den Grund wissen.

16voto

Ignacio Vazquez-Abrams Punkte 735200

Weil es das Leben des Compilers einfacher macht. Es gibt keinen wirklichen Grund, warum es nachher nicht mehr Argumente haben könnte, aber es würde einen viel komplexeren Compiler erfordern und deshalb wurde die Spezifikation so geschrieben.

10voto

mikera Punkte 103423

Der Hauptgrund dafür ist, dass es ansonsten möglicherweise zweideutig wäre....

Zum Beispiel, wie könnte der Compiler feststellen, ob Argumente varargs sind oder separate benannte Argumente in einer langen Liste von Argumenten mit mehreren varargs?

Stellen Sie sich eine Methodensignatur wie folgt vor:

printNames(String... girls, String... boys);

Wenn Sie printNames("Lucy", "Jo", "Paul") verwenden, ist Jo ein Junge oder ein Mädchen?

Als weiteres Beispiel für Mehrdeutigkeit könnte es Probleme geben, wenn varargs früher in der Argumentliste stehen, wenn es überladene Methoden gibt. Zum Beispiel:

printFruit(String... apples, String orange);
printFruit(String... apples, String grapefruit, String orange);

Wie kann der Compiler feststellen, ob das vorletzte Argument ein Grapefruit oder ein zusätzlicher Apfel ist?

Beachten Sie, dass dies nicht einzigartig für Java ist, die meisten Sprachen, die varargs unterstützen, erlauben sie nur aus demselben Grund am Ende der Argumentliste.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X