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;
}