PMD 错误:在 Lombok Builder 中覆盖某些方法时的 AccessorMethodGeneration
Posted
技术标签:
【中文标题】PMD 错误:在 Lombok Builder 中覆盖某些方法时的 AccessorMethodGeneration【英文标题】:PMD error: AccessorMethodGeneration when overriding some method in Lombok Builder 【发布时间】:2022-01-07 13:29:06 【问题描述】:我有以下应该用 Lombok @Builder
构建的类:
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder(toBuilder = true)
public class Foo
private String myName;
private int myAge;
public static class FooBuilder
// I'm overriding this method to add some validation logic
public FooBuilder myName(String myName)
// some simple logic to validate "myName"
this.myName= myName;
return this;
我想在设置之前添加一些简单的逻辑来验证myName
字段。但我不想为myAge
这样做。所以myAge
字段的构造器和FooBuilder
构造器将由Lombok 生成。
这会使 PMD 抛出错误:
Rule:AccessorMethodGeneration Priority:3 避免自动生成的方法 访问内部/外部类的私有字段和方法。
我应该抑制这个错误还是有更好的方法来实现我想要的?
【问题讨论】:
【参考方案1】:规则 AccessorClassGeneration 和 AccessorMethodGeneration 是为了帮助 android (!) 开发而创建的,当时 DEX 格式存在限制。这些生成的类/方法计入当时可能的类/方法总数 (64k)。
如果您不是在开发旧的 Android 应用程序,那么您可能可以将这些规则从您的规则集中完全删除。例如。今天有 Multidex 可能允许在您的应用程序中使用超过 64k 的方法。
另外,从 Java 11 开始,java 编译器不再生成这些访问器类和方法,请参阅 JEP 181: Nest-Based Access Control。
【讨论】:
以上是关于PMD 错误:在 Lombok Builder 中覆盖某些方法时的 AccessorMethodGeneration的主要内容,如果未能解决你的问题,请参考以下文章