[英]Create annotation that includes FindBugs' and Lombok's @NonNull
我想使用 Lombok 的@NonNull
注釋為方法參數自動生成空檢查代碼,同時還使用 FindBugs 的@NonNull
來使用靜態分析工具並在情況適用時生成適當的警告。
截至目前,我需要執行以下操作:
public void doSomething (@lombok.NonNull @edu.umd.cs.findbugs.annotations.NonNull Object parameter)
{
// Do something
}
這很丑陋,所以我想避免使用這種語法。 我閱讀了嵌套注釋( 這里和這里),但我似乎無法找到一種方法來創建我自己的自定義注釋,其中兩個NonNull
注釋都作為嵌套注釋。 我是否正在嘗試做一些不起作用的事情?
這是我最近的嘗試:
@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;
}
您不能將注釋與自定義注釋“合並”,但是您可以在類范圍上使用@ParametersAreNonnullByDefault
,這應該允許推斷edu.umd.cs.findbugs.annotations.NonNull
。
我認為你的鏈接都不會幫助你。 您需要使用自定義注釋從兩者擴展,但您甚至不能從一個擴展,因為所有注釋都有一個隱式的注釋擴展子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.