繁体   English   中英

Lombok @builder 在扩展另一个类的类上

[英]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.

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