Wie kann man angeben, dass Mitgliedsfelder standardmäßig @Nonnull sind?

Meine Frage ist eine Fortsetzung vondieses.

In früheren Versionen von FindBugs war es möglich, zu verwenden@DefaultAnnotation(Nonnull.class) oder@DefaultAnnotationForFields(Nonnull.class) um anzuzeigen, dass alleFelder in einem Paket sollte als behandelt werden@Nonnull. In der aktuellen Version von FindBugs (2.0)@DefaultAnnotation und@DefaultAnnotationForFields sind veraltet, und wir sollten stattdessen alle JSR-305 verwenden. JSR-305 scheint jedoch nicht alles abzudecken, was die (inzwischen veralteten) FindBugs-Anmerkungen abdecken.

Dasjavadoc schlägt eine Reihe von Alternativen vor:

@ParametersAreNonnullByDefault. Dies gilt (offensichtlich) nur für Parameter, nicht für Mitgliedsfelder.@CheckReturnValue, wenn auf einen Typ oder eine Packung angewendet. Auch dies gilt nicht für Mitgliedsfelder.@TypeQualifierDefault. Vielleicht kann dies tun, was ich will, aber ich verstehe nicht, wie es funktioniert, und ich kann keine Dokumentation oder Beispiele zu seiner Verwendung oder Absicht finden, abgesehen von etwas kryptischem Javadoc. Ich denke, es wird mir helfen, meine eigenen Annotationen zu erstellen, aber kann ich sicher sein, dass alle Tools (FindBugs, Eclipse usw.) diese neue Annotation richtig (oder überhaupt) interpretieren?

Dasjavadoc gibt keine Hinweise zum Umgang mit seiner Veraltetheit.

Wie soll ich unter Verwendung der aktuellen Versionen von FindBugs und / oder JSR-305 angeben, dass alle Mitgliedsfelder in einem bestimmten Paket (oder sogar in einer bestimmten Klasse) als behandelt werden sollen?@Nonnull? Ist es überhaupt möglich?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage