Beste Praxis der Verwendung von Flaggen in der Java-Methode

Was ist die best practice für die Angabe von flags, die in einer Java-Methode?

Ich habe gesehen, SWT mit int als bitfields, wie:

(Beispiel teilweise aus "Effective Java, 2nd Ed.", Seite 159):

public class Text {
  public static final int STYLE_BOLD = 1 << 0; //1
  public static final int STYLE_ITALIC = 1 << 1; //2

  void printText(String text, int flags) {

  }
}

client-Aufruf sieht wie folgt aus:

printText("hello", Text.STYLE_BOLD | Text.STYLE_ITALIC);

..aber dies wird abgeraten, da Sie gemischt-flags (int-Werte) aus unterschiedlichen Klassen zusammen, ohne compiler überprüft.

Im gleichen Buch ("Effective Java"), sehe ich die Verwendung von EnumSet, aber dann ist dein user nennen wird:

printText("hello", EnumSet.of(Style.Bold, Style.ITALIC));

Ich finde das ein wenig ausführlich und ich bevorzuge die Eleganz der SWT.

Gibt es eine andere alternative oder ist dies im Grunde die zwei Geschmacksrichtungen, die Sie Holen müssen?

  • Ich denke du meinst STYLE_ITALIC = 1 << 1.
  • Ich denke, das ist eine großartige demonstration von einem gemeinsamen problem mit den bit-Feld-Ansatz!
  • Ja, in der Tat es ist. 🙂
  • Danke @VictorZamanian ich aktualisierte die Frage
  • Was findest du "ausführliche" über das zweite? Es ist ein einzelnes Zeichen mehr. Was findest du "elegant" über den ersten? Alle es tut, ist werfen Art Sicherheit aus - es gibt nichts eleganter über, die.
InformationsquelleAutor Roalt | 2011-05-20
Schreibe einen Kommentar