簡體   English   中英

如何告訴 lombok 生成的 getter 是 @Override

[英]How to tell to lombok the generated getter is an @Override

我在我的項目中使用 lombok 並且我有一個界面:

public interface MyInterface{

    Object getA()
}

還有一個班

@Getter
public class MyClass implements MyInterface{

      private Object a;

      private Object b

}

而且我檢查了生成的類,類中生成的方法不是@Override

我想知道如何添加此注釋? 缺少@Override的后果是什么?

這可能是另一個問題,但此代碼由聲納分析,聲納說從未使用過私有字段 a。

我已經看過關於sonarqube + lombok = 誤報的主題

但在我的情況下, b 不會產生誤報。 所以我不認為這有直接關系

您是否看到無需重新實現 getA() 即可避免此問題的解決方案?

您可以使用注釋的onMethod屬性將您想要的任何注釋添加到生成的方法中。

@Getter
public class MyClass implements MyInterface{
    @Getter(onMethod = @__(@Override))
    private Object a;
    private Object b
}

在這種情況下,作為風格問題,我可能會將類級別的@Getter移動到另一個字段。 如果有cde都應該使用正常(無注釋)@Getter 邏輯,我會保留如上。

public class MyClass implements MyInterface{
    @Getter(onMethod = @__(@Override))
    private Object a;
    @Getter
    private Object b
}

您可能還想啟用 Lombok 的生成注釋 它將防止某些工具(覆蓋、靜態分析等)打擾檢查 Lombok 的方法。 不確定在這種情況下它是否會有所幫助,但我幾乎在所有項目中都啟用了它。

lombok.addLombokGeneratedAnnotation = true

您可以添加@Override通過使用一個特定的領域@GetteronMethod

例如

@Getter(onMethod = @__(@Override))
private Object a;

@Override 對代碼本身沒有影響 它只是通知編譯器該方法正在覆蓋其超類中的方法。 如果該方法沒有覆蓋超類中的方法,編譯器將導致構建失敗。

防止通過Error Prone (或類似工具)對缺少 @Override 進行誤報檢測的更通用方法是配置 Lombok 以使用@lombok.Generated注釋其生成的代碼。 這可以通過將以下條目添加到 Lombok 的lombok.config來全局完成:

lombok.addLombokGeneratedAnnotation = true

請注意,這不是一個通用的解決方案 - 相關工具需要尊重@lombol.Generated (或者更好,任何@*.Generated )注釋。

JacocoError Prone (最近)等工具已經支持它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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