gpt4 book ai didi

java - lombok @Builder(toBuilder = true) 在子类的构造函数上使用时出现编译错误

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:27 25 4
gpt4 key购买 nike

我的代码如下

package test.lombok;

import lombok.*;

@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
public class SuperClass {

private int foo;

@Getter
public static class SubClass extends SuperClass {

private int bar;

@Builder(toBuilder = true)
private SubClass(int foo, int bar) {
super(foo);
this.bar = bar;
}

}
}

如上所示,我正在尝试在子类上使用 @Builder(toBuilder = true)。

toBuilder设置为false时,完全没有问题。

但是当我设置 toBuilder = true 时,我得到一个编译错误“Error:java: foo has private access in test.lombok.SuperClass”。

我想知道为什么会发生这种情况以及如何解决这个问题。

最佳答案

toBuilder 属性设置为 true 时,

Lombok 尝试在 SubClass 中创建 toBuilder 方法 在注释 @Builder 中。该方法返回 SubClassBuilder 类。这是 toBuilder 方法的样子,

public SuperClass.SubClass.SubClassBuilder toBuilder() {
return (new SuperClass.SubClass.SubClassBuilder())
.foo(this.foo).bar(this.bar);
}

如您所见,toBuilder 方法尝试直接访问 foo 属性,而不是通过方法 getFoo。由于 foo 是私有(private)的并且属于父类 SuperClass,您会收到以下错误:

错误:java:foo 在 test.lombok.SuperClass 中具有私有(private)访问权限

关于java - lombok @Builder(toBuilder = true) 在子类的构造函数上使用时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com