java中子类的编码编译,java – lombok @Builder(toBuilder = true)在子类的构造函数上使用时的编译错误 - 代码日志...

public SuperClass.SubClass.SubClassBuilder toBuilder() {

return (new SuperClass.SubClass.SubClassBuilder()).foo(this.foo).bar(this.bar);

而不是this.foo它应该是super.foo,代码将编译.在这种情况下,访问super.foo是可能的,因为SubClass是SuperClass的内部类,否则,Java也会禁止super.foo.

如果你想看到lombok为你自己生成的代码,将foo声明为public,然后编译,然后delombok(或反编译),你会看到这样的代码(然后将属性更改为private以查看错误发生的位置):

import java.beans.ConstructorProperties;

public class SuperClass {

public int foo;

@ConstructorProperties({"foo"})

protected SuperClass(int foo) {

this.foo = foo;

public int getFoo() {

return this.foo;

public static class SubClass extends SuperClass {

private int bar;

private SubClass(int foo, int bar) {

super(foo);

this.bar = bar;

public static SuperClass.SubClass.SubClassBuilder builder() {

return new SuperClass.SubClass.SubClassBuilder();

public SuperClass.SubClass.SubClassBuilder toBuilder() {

return (new SuperClass.SubClass.SubClassBuilder()).foo(this.foo).bar(this.bar);

public int getBar() {

return this.bar;

public static class SubClassBuilder {

private int foo;

private int bar;

SubClassBuilder() {

public SuperClass.SubClass.SubClassBuilder foo(int foo) {

this.foo = foo;

return this;

public SuperClass.SubClass.SubClassBuilder bar(int bar) {

this.bar = bar;

return this;

public SuperClass.SubClass build() {

return new SuperClass.SubClass(this.foo, this.bar);

public String toString() {

return "SuperClass.SubClass.SubClassBuilder(foo=" + this.foo + ", bar=" + this.bar + ")";

编辑:感谢@maaartinus指点我到super.foo,答案是用这个信息更新的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值