繁体   English   中英

Lombok @Builder inheritance 3 类

[英]Lombok @Builder inheritance for 3 Classes

这可能是一个初学者问题,但我很困惑。

我有 3 个类,如下所示。 在这种情况下如何使用 lombok 的 @Builder 注释。

尝试按照以下代码执行时,Class C 出现错误。

如果父 class Class B 也有@Builder注释, Class C 会工作吗?

我收到一个错误:- 错误:java:ClassC 中的 builder() 无法隐藏 ClassB 返回类型中的 builder() ClassCBuilder 与 ClassBBuilder 不兼容

Class C:

import lombok.Builder;
public class C extends B {
    private String fieldC;

    @Builder
    public C(String fieldC, String fieldB, String fieldA) {
        super(fieldB, String fieldA);
        this.fieldC = fieldC;
    }
}

Class B:

import lombok.Builder;
public class B extends A {
    private String fieldB;

    @Builder
    public B(String fieldB, String fieldA) {
        super(fieldA);
        this.fieldB = fieldB;
    }
}

Class A:

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public abstract class A {
    private String fieldA;
}

@Builder应该添加到class而不是像这样的构造函数:

import lombok.Builder;
@Builder
public class C extends B {
    private String fieldC;

    public C(String fieldC, String fieldB, String fieldA) {
        super(fieldB, String fieldA);
        this.fieldC = fieldC;
    }
}

@Builder注释使 lombok 生成内部 Builder 类。 @Builder.Default类的内容添加到字段或方法只会修改构建器方法。 请参阅 lombok 的@Builder描述页面中的以下示例:

 import lombok.Builder; import lombok.Singular; import java.util.Set; @Builder public class BuilderExample { @Builder.Default private long created = System.currentTimeMillis(); private String name; private int age; @Singular private Set<String> occupations; }

使用@Builder 注释的@Builder将自动具有一个内部 class,其名称与外部 class 类似,但后缀为“Builder”。 然后,您可以通过调用来实例化这样的构建器:

MyClass myObject = MyClass.builder().withSomething("abc").build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM