小编Jan*_*eke的帖子

我可以使用 Lombok @Builder 传递父类作为参数吗?

我想创建一个Child传递 aParent和其他附加参数的新实例。

例如,如果我有:

public class Parent {
    public String param1;
    public String param2;
    // many parameters
    public String paramN;
}

public class Child extends Parent {
    public String subValue;
}
Run Code Online (Sandbox Code Playgroud)

使用 lombok,是否有一个构建器可以让我创建一个ChildParent和缺失值作为参数传递的实例?

如果我可以写一些类似的东西会更容易:

Parent p = Parent.builder()
                 .param1("a")
                 .param2("b")
                 // many parameters
                 .paramN("b")
                 .build();
Child c = Child.builder(p).subValue("c").build();
Run Code Online (Sandbox Code Playgroud)

java lombok

8
推荐指数
2
解决办法
6354
查看次数

Lombok @Wither/@With Inheritance(超/子类)

请建议在应用继承时如何使用@Wither/ 。@With

我有一个抽象类Parent和具体类ChildChild应该是不可变的。两者都戴上@Wither会给我两个错误:

  • 构造函数 Child(String) 未定义
  • Child 类型必须实现继承的抽象方法 Parent.withA(String)
@Value
@Wither
@NonFinal
@SuperBuilder
abstract class Parent {
    String a;
}

@Value
@Wither
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
class Child extends Parent {
    String b;
}
Run Code Online (Sandbox Code Playgroud)

我很乐意删除@Wither并使用构建器方法,但我正在重构一个公共库(尝试优化模型类)并且我不希望我的客户端出现编译错误。

我还发现这个问题解释了第二个错误。但意图的逻辑并不明确https://github.com/rzwitserloot/lombok/issues/945

java lombok

7
推荐指数
1
解决办法
2686
查看次数

Jackson 私有构造函数,JDK 9+,Lombok

我正在寻找有关 Jackson 如何与不可变类型的私有构造函数一起工作的文档。使用 Jackson 2.9.6 和 spring boot 提供的默认对象映射器 2 运行 jdk-10.0.1

给定 JSON:

{"a":"test"} 
Run Code Online (Sandbox Code Playgroud)

并给出一个类,如:

public class ExampleValue {

    private final String a;

    private ExampleValue() {
        this.a = null;
    }

    public String getA() {
        return this.a;
    }
}
Run Code Online (Sandbox Code Playgroud)

反序列化(令人惊讶的是,至少对我而言)似乎有效。

而这不会:

public class ExampleValue {

    private final String a;

    private ExampleValue(final String  a) {
        this.a = a;
    }

    public String getA() {
        return this.a;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做:

public class ExampleValue {

    private final String a;

    @java.beans.ConstructorProperties({"a"})
    private ExampleValue(final String a) …
Run Code Online (Sandbox Code Playgroud)

jackson lombok jackson2 jackson-databind

5
推荐指数
1
解决办法
997
查看次数

如何为Abstract类实现Lombok @Builder

我有扩展抽象类的类,我不想把它@Builder放在所有子类之上.

有没有办法@Builder为抽象类实现Lombok ?

java design-patterns builder lombok

3
推荐指数
2
解决办法
4599
查看次数

构造函数上的 @Builder(toBuilder = true):错误“具有私有访问权限”

我有以下2个亲子班..

@AllArgsConstructor
public abstract class Data {

    @Getter
    private final String name;

    @Getter
    private final String source;

    @Getter
    private final String message;
}
Run Code Online (Sandbox Code Playgroud)

public class EventData extends Data {

    @Getter
    private String errorCode;

    @Getter
    private String errorMessage;

    @Getter
    private String api;


    @Builder(toBuilder = true)
    public EventData(String eventName, String errorCode, String eventMessage, String api, String errorMessage) {
        super(eventName, EventSource.BARCLAYS_GIL_PLUGIN_A_REST_SERVICE, eventMessage);
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
        this.api = api;
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

    [javac] /local/home/vishivan/workplace/xyx/src/ABC/src/com/LOL/mno/models/EventData.java:36: error: eventMessage has private access in …
Run Code Online (Sandbox Code Playgroud)

java lombok

1
推荐指数
1
解决办法
1103
查看次数