Frage

Ich habe versucht, so etwas wie folgt aus:


boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};

Aber dieser Code nicht einmal kompilieren. Gibt es eine Erklärung dafür? ist kein gültiger Ausdruck funkyBoolean ? {1,2,3} : {4,5,6} ? Dank der im Voraus!

War es hilfreich?

Lösung

Sie können nur die {1, 2, 3} Syntax in sehr begrenzten Situationen verwendet werden, und dies ist nicht einer von ihnen. Versuchen Sie folgendes:

int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};

Durch die Art und Weise, guter Java-Stil ist die Erklärung zu schreiben:

int[] array = ...

EDIT: Für die Aufzeichnung der Grund, dass {1, 2, 3} so eingeschränkt ist, dass seine Art nicht eindeutig ist. Theoretisch könnte es ein Array von ganzen Zahlen, sehnt sich, die Schwimmer, usw. Außerdem ist die Java-Grammatik, wie durch die JLS verbietet es definiert sein, so dass das ist.

Andere Tipps

boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
  

Eine Feldinitialisierung kann angegeben werden   in einer Erklärung, oder als ein Teil eines   Array-Erstellung Ausdruck ( §15.10 ), eine Anordnung und Bereitstellen einige Anfangswerte

Schaffung

Das ist, was das Java Spec sagt (10.6). So ist die ‚kurze‘ Version (mit dem Ausdruck Schöpfung) nur in allen anderen Fällen in Erklärungen (int[] a = {1,2,3};) erlaubt ist, müssen Sie ein new int[]{1,2,3} Konstrukt, wenn Sie die Initialisierer verwenden möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top