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?
Aber wenn
JobType[] values()
deklarieren, kann ich@Exclude
nicht für andere Arten vonEnum
wiederverwenden.
Dies ist jedoch der beste Weg, um zu tun, was Sie wollen. Hier ist das Ding:
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.
Damit werden zwei Dinge erreicht:
@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 Deklarationenum
deklariert. Die meisten Programmierer sollten die MethodetoString()
bevorzugen, da die MethodetoString
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.
Tags und Links java annotations coding-style