簡體   English   中英

創建包含 FindBugs 和 Lombok 的 @NonNull 的注釋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM