Java Annotation - Array von Objekten oder toString-Werten

9

Ich muss eine Anmerkung schreiben, um bestimmte Werte aus einer Ergebnismenge auszuschließen.

Hintergrund:

Eindeutige Werte werden aus Feldern ausgewählt und in einer ComboBox aufgelistet. Einige der alten Werte sind veraltet und ich möchte sie nicht anzeigen, auch wenn sie von JDBCs SELECT DISTINCT() zurückgegeben werden. Es ist wie ein Mini-Framework, in dem Benutzer ausgewählte Abfragen erstellen können, indem sie auf Werte von ComboBoxen klicken.

Ich habe folgendes versucht (der Code kompiliert nicht - Kommentarzeilen sind die Wege, die ich versucht habe, das Problem zu lösen):

%Vor%

Ich mag nicht {"S"} , irgendwelche Vorschläge?

    
Adam Horvath 06.07.2015, 11:36
quelle

1 Antwort

1
  

Aber wenn JobType[] values() deklarieren, kann ich @Exclude nicht für andere Arten von Enum wiederverwenden.

Dies ist jedoch der beste Weg, um zu tun, was Sie wollen. Hier ist das Ding:

Die Klasse Enum ist selbst bedeutungslos.

Es gewinnt nur Bedeutung, wenn es unterklassifiziert wird. Angenommen, Sie möchten einen weiteren Filter hinzufügen, sagen Sie Color (Ihre eigene benutzerdefinierte Color enum, nicht java.awt.Color ). Offensichtlich ist die Sache, die Ihre Filterklasse macht, sehr unterschiedlich zum Herausfiltern von JobType , als wenn Sie Color ausfiltern würden!

Daher ist es am besten, jede unterschiedliche Zeit von enum zu verwenden, die Sie in ihrem eigenen Argument filtern möchten, z. B.

%Vor%

Damit werden zwei Dinge erreicht:

  1. Machen Sie es leicht, für jeden Filtertyp ein unterschiedliches Filterverhalten zu wählen.
  2. Machen Sie die @Excludes Annotation leserlicher, indem Sie die verschiedenen Parameter in verschiedene Gruppen einteilen.

Der Javadoc für Enum.name() sagt :

  

Gibt den Namen dieser enum -Konstante genau so zurück, wie in der Deklaration enum deklariert. Die meisten Programmierer sollten die Methode toString() bevorzugen, da die Methode toString möglicherweise einen benutzerfreundlicheren Namen zurückgibt. Diese Methode wurde in erster Linie für den Einsatz in speziellen Situationen entwickelt, in denen die Korrektheit vom genauen Namen abhängt, der nicht von Release zu Release variiert.

Ich schlage vor, dass Sie versuchen, den Leuten in Ihrer Firma zu sagen, dass sie das Prinzip offen / geschlossen lesen und erklären, warum es in diesem Fall besonders schädlich wäre, es zu verletzen.

    
durron597 06.07.2015, 17:38
quelle

Tags und Links