Enumerationskonstante separieren

Hallo zusammen,

ich hätte eine Frage. Ich generiere anhand meines Programmes ein Enum, in diesem Enum können dann auch direkt Enumerationskonstanten erstellt werden.

Meine Problemstellung ist nun: wenn ich eine Enumkonstante im Enum erstellen lasse, kommt direkt das Semikolon. Wenn ich nun aber zwei oder mehrere Enumkonstanten generieren möchte, sollen diese mit einem Komma separiert werden und beim letzten nur ein Semikolon. Habe hier schon rumprobiert, auch mit Iterator, solange er hasNext() hat, Kommas setzen soll und wenn nicht Semikolon. Habe es leider nicht hinbekommen.

Hier der Ausschnitt des Codes:

Das ist die Methode für die hinzufügen eines Enum Feldes.
Java:
protected void addContent(final StringBuilder sb, String indent) {

    sb.append(indent);
    sb.append(getName()).append(",");
    sb.append(indent);

  }

Vielen Dank für Eure Hilfe/Anregungen.

Liebe Grüße
 

rme

Top Contributor
Das Semikolon am Ende der enums ist optional ;)

Ansonsten: Du fügst neue Konstanten ja über eine Methode hinzu. Die Methode könnte prüfen, schonmal eine Konstante hinzugefügt wurde. Wenn Nein: nur Namen hinzufügen. Wenn Ja: ", " + Name hinzufügen und markieren, dass ein Name vorhanden ist. So sorgst du schonmal dafür, dass du immer eine gültige Kette von "Name_1, ..., Name_n" bekommt. Am Ende könntest du zum Finalisieren noch eine Methode aufrufen, die das Semikolon schreibt - vielleicht dort, wo du den fertigen String anwendest?
 
Vielen Dank für deine schnelle Nachricht.

Ah, man lernt immer wieder dazu :) Ist also nicht nötig.

Aber hätte es trotzdem gerne. Wie könntest du dir das genau vorstellen, mit prüft, ob die Methode schon angewendet wurde, if-Abfrage? Aber auf was?

Evtl. kurz ein Quick and Dirty Code?
 

rme

Top Contributor
Falls dein StringBuffer am Anfang leer ist und nur die Aufzählung enthält, z.B. so:
Java:
if(sb.length() > 0) {
  // es sind schon Elemente vorhanden, also erstmal ein Komma vor das nächste:
  sb.append(", ");
}
sb.append(getName());

Auf diese Weise wird vor dem ersten Element kein Komma geschrieben, ab dann aber immer. Falls der StringBuffer vorher schon irgendwas enthält, geht das über ein Flag:

Java:
if(!firstElement) {
  // es sind schon Elemente vorhanden, also erstmal ein Komma vor das nächste:
  sb.append(", ");
} else {
  // wir schreiben das erste ohne den obigen Code, aber die folgenden mit -> flag setzen
  firstElement = false;
}
sb.append(getName());
 

Neue Themen


Oben