[英]Lombok @builder on a class that extends another class
我有两个类Child
extends Parent
。 我需要在类上添加 @Builder 注释,这样我就不需要自己创建构建器。
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
我需要能够构建子实例,以便
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
但到目前为止,我收到了代码注释中提到的错误。 任何人都可以指出我如何使用 lombok 或任何其他类似库实现它的正确方向吗?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))
编译但@AllArgsConstructor(onConstructor=@__(@Builder))
不@AllArgsConstructor(onConstructor=@__(@Builder))
?
我有两个班, Child
扩展了Parent
。 我需要在类上放置@Builder批注,这样我就不需要自己创建构建器了。
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
我需要能够建立子实例,以便
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
但是到目前为止,我收到了代码注释中提到的错误。 任何人都可以将我指向正确的方向,如何使用lombok或任何其他类似的库来实现它吗?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))
编译,但是@AllArgsConstructor(onConstructor=@__(@Builder))
不能@AllArgsConstructor(onConstructor=@__(@Builder))
?
我有两个班, Child
扩展了Parent
。 我需要在类上放置@Builder批注,这样我就不需要自己创建构建器了。
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
我需要能够建立子实例,以便
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
但是到目前为止,我收到了代码注释中提到的错误。 任何人都可以将我指向正确的方向,如何使用lombok或任何其他类似的库来实现它吗?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))
编译,但是@AllArgsConstructor(onConstructor=@__(@Builder))
不能@AllArgsConstructor(onConstructor=@__(@Builder))
?
我有两个班, Child
扩展了Parent
。 我需要在类上放置@Builder批注,这样我就不需要自己创建构建器了。
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
我需要能够建立子实例,以便
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
但是到目前为止,我收到了代码注释中提到的错误。 任何人都可以将我指向正确的方向,如何使用lombok或任何其他类似的库来实现它吗?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))
编译,但是@AllArgsConstructor(onConstructor=@__(@Builder))
不能@AllArgsConstructor(onConstructor=@__(@Builder))
?
我有两个班, Child
扩展了Parent
。 我需要在类上放置@Builder批注,这样我就不需要自己创建构建器了。
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
我需要能够建立子实例,以便
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
但是到目前为止,我收到了代码注释中提到的错误。 任何人都可以将我指向正确的方向,如何使用lombok或任何其他类似的库来实现它吗?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))
编译,但是@AllArgsConstructor(onConstructor=@__(@Builder))
不能@AllArgsConstructor(onConstructor=@__(@Builder))
?
如果你的子类想要在父类已经有一个 builder 方法时有一个 builder 方法,那么你可以为子类创建一个 all args 构造函数,然后在子类的构造函数上注释 builder 并设置属性
@Builder(builderMethodName = "custombuildername")
然后在创建子类 Object 时调用 customname 构建器。
package jerry;
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
private String a;
private int b;
private boolean c;
@Builder(builderMethodName = "childBuilder")
public Child(String a, int b, boolean c, double d, float e){
super(d,e);
}
}
@Builder
public class Parent {
private double d;
private float e;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.