2016-05-13 15 views
-1

Ich möchte Lomboks @NonNull Annotation verwenden, um den Nullprüfungscode automatisch für Methodenparameter zu generieren, während ich FindBugs' @NonNull verwende, um statische Analysetools zu verwenden und entsprechende Warnungen zu generieren gilt.Annotation erstellen, die FindBugs 'und Lomboks @NonNull enthält

Ab jetzt muss ich folgendes tun:

public void doSomething (@lombok.NonNull @edu.umd.cs.findbugs.annotations.NonNull Object parameter) 
    { 
    // Do something 
    } 

Das ist ziemlich hässlich, so würde ich mit dieser Syntax vermeiden möchten. Ich habe über verschachtelte Annotationen gelesen (here und here), aber ich finde keinen Weg, meine eigene Annotation mit den beiden Annotationen NonNull als verschachtelte Annotationen zu erstellen. Versuche ich etwas zu tun, das nicht funktionieren kann?

Hier ist mein letzter Versuch:

@Documented 
@Retention (RetentionPolicy.CLASS) 
@Target (value={ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) 
public @interface MyNonNull 
    { 
    public lombok.NonNull lombokNonNull() default @lombok.NonNull; 
    public edu.umd.cs.findbugs.annotations.NonNull findBugsNonNull() default @edu.umd.cs.findbugs.annotations.NonNull; 
    } 

Antwort

1

Sie können Anmerkungen nicht mit benutzerdefinierten Anmerkungen zusammenführen, Sie können jedoch @ParametersAreNonnullByDefault für den Klassenbereich verwenden, der edu.umd.cs.findbugs.annotations.NonNull ermöglicht.

0

Ich glaube, weder Ihre Links werden Ihnen helfen. Sie müssten beide mit Ihrer benutzerdefinierten Annotation erweitern, aber Sie können nicht einmal von einer Annotation ausschließen, da alle Annotationen eine implizite extend-Klausel für Annotation haben.

Verwandte Themen