我想创建一个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,是否有一个构建器可以让我创建一个Child将Parent和缺失值作为参数传递的实例?
如果我可以写一些类似的东西会更容易:
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) 请建议在应用继承时如何使用@Wither/ 。@With
我有一个抽象类Parent和具体类Child。Child应该是不可变的。两者都戴上@Wither会给我两个错误:
@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
我正在寻找有关 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) 我有扩展抽象类的类,我不想把它@Builder放在所有子类之上.
有没有办法@Builder为抽象类实现Lombok ?
我有以下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)