2017-10-27 3 views
0

Als Titel möchte ich überprüfen, ob ein Attributwert existiert oder nicht in einer Liste von Annotation. Ex:Java: Überprüfen Sie einen Attributwert existiert oder nicht in der Liste von Annotation

private final String[] list = {"a", "b", "c", "d"} 
@Includes(list = list) 
private String state; 

aber es ist ein Fehler Attribute must be constant Wie kann ich es tun? BTW, ist es eine gute Lösung, dies durch Annotation zu überprüfen? Hier meine Anmerkung ist:

@Target(ElementType.FIELD) 
@Inherited 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Includes { 
    String[] list(); 
} 

Antwort

1

Der Fehler klar sagt:

Der Wert für Anmerkung Attribut Includes.list

Mit Nicht-Array-Variablen ein Feldinitialisierung sein muss, Der Wert muss endgültig und statisch sein, es gibt jedoch keine Möglichkeit, dies mit Arrays zu tun. Es bedeutet, dass Sie diese Abhilfe zu tun haben:

@Includes(list = {"a", "b", "c", "d"}) 
private String state; 

Außerdem Array Initialisierung falsch ist, verwenden {} statt [].

+0

Ist es eine gute Übung, Annotation zu verwenden, um zu prüfen, ob sie in Array enthalten ist? –

+0

Sie haben nicht angegeben, warum Sie überprüfen möchten, ob das Array einen bestimmten Wert enthält. Daher kann ich Ihnen keine Antwort geben. Liegt es an Validierungen oder möchten Sie Anmerkungen an einem einfachen Beispiel üben? –

+0

Ich übe an einem einfachen Beispiel –

Verwandte Themen