如何告诉 lombok 生成的 getter 是一个 @Override
How to tell to lombok the generated getter is an @Override
我在我的项目中使用了 lombok,我有一个接口 :
public interface MyInterface{
Object getA()
}
还有一个class
@Getter
public class MyClass implements MyInterface{
private Object a;
private Object b
}
并且我已经检查了生成的 class 并且 class 中生成的方法不是 @Override
我想知道如何添加这个注释?丢失 @Override
的后果是什么?
这可能是另一个问题,但是这段代码是由 sonarqube 分析的,而 sonar 说从未使用过私有字段 a。
我已经看过关于
的主题
但在我的例子中,b 不会造成误报。所以我认为这没有直接关系
您是否找到了无需重新实现 getA() 即可避免此问题的解决方案?
您可以使用注解的onMethod
attribute在生成的方法中添加您想要的任何注解。
@Getter
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
private Object b
}
在这种情况下,作为风格问题,我可能会将 class-level @Getter
移动到其他字段。如果有 c
、d
、e
都应该使用正常(无注释)@Getter 逻辑,我将保留如上。
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
@Getter
private Object b
}
您可能还想 enable Lombok's generated annotations。它会阻止一些工具(覆盖率、静态分析等)检查 Lombok 的方法。不确定它在这种情况下是否有帮助,但我几乎在我的所有项目中都启用了它。
lombok.addLombokGeneratedAnnotation = true
您可以使用 @Getter
的 onMethod
将 @Override
添加到特定字段。
例如
@Getter(onMethod = @__(@Override))
private Object a;
@Override
有 no affect on the code itself。它只是通知编译器该方法正在覆盖其超类中的方法。如果该方法未覆盖超类中的方法,编译器将导致构建失败。
通过Error Prone(或类似工具)防止误报检测缺失@Override 的更通用方法是配置 Lombok 以使用 [=11= 注释其生成的代码].这可以在全球范围内完成,方法是将以下条目添加到 Lombok 的 lombok.config
:
lombok.addLombokGeneratedAnnotation = true
请注意,这不是通用解决方案 - 相关工具需要遵守 @lombol.Generated
(或更好,任何 @*.Generated
)注释。
Jacoco
和 Error Prone
(最近)等工具已经支持它。
我在我的项目中使用了 lombok,我有一个接口 :
public interface MyInterface{
Object getA()
}
还有一个class
@Getter
public class MyClass implements MyInterface{
private Object a;
private Object b
}
并且我已经检查了生成的 class 并且 class 中生成的方法不是 @Override
我想知道如何添加这个注释?丢失 @Override
的后果是什么?
这可能是另一个问题,但是这段代码是由 sonarqube 分析的,而 sonar 说从未使用过私有字段 a。
我已经看过关于
但在我的例子中,b 不会造成误报。所以我认为这没有直接关系
您是否找到了无需重新实现 getA() 即可避免此问题的解决方案?
您可以使用注解的onMethod
attribute在生成的方法中添加您想要的任何注解。
@Getter
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
private Object b
}
在这种情况下,作为风格问题,我可能会将 class-level @Getter
移动到其他字段。如果有 c
、d
、e
都应该使用正常(无注释)@Getter 逻辑,我将保留如上。
public class MyClass implements MyInterface{
@Getter(onMethod = @__(@Override))
private Object a;
@Getter
private Object b
}
您可能还想 enable Lombok's generated annotations。它会阻止一些工具(覆盖率、静态分析等)检查 Lombok 的方法。不确定它在这种情况下是否有帮助,但我几乎在我的所有项目中都启用了它。
lombok.addLombokGeneratedAnnotation = true
您可以使用 @Getter
的 onMethod
将 @Override
添加到特定字段。
例如
@Getter(onMethod = @__(@Override))
private Object a;
@Override
有 no affect on the code itself。它只是通知编译器该方法正在覆盖其超类中的方法。如果该方法未覆盖超类中的方法,编译器将导致构建失败。
通过Error Prone(或类似工具)防止误报检测缺失@Override 的更通用方法是配置 Lombok 以使用 [=11= 注释其生成的代码].这可以在全球范围内完成,方法是将以下条目添加到 Lombok 的 lombok.config
:
lombok.addLombokGeneratedAnnotation = true
请注意,这不是通用解决方案 - 相关工具需要遵守 @lombol.Generated
(或更好,任何 @*.Generated
)注释。
Jacoco
和 Error Prone
(最近)等工具已经支持它。