当前位置: 首页 > 知识库问答 >
问题:

具有强制参数的龙目岛构建器

权浩阔
2023-03-14

如果我将@builder添加到类中。创建生成器方法。

Person.builder().name("john").surname("Smith").build();
Person.builder("john").surname("Smith").build();
@Builder
public class Person {

    private String name;
    private String surname;

    public static PersonBuilder builder(String name) {
        return new PersonBuilder().name(name);
    }
}
Person p = Person.builder("Name").surname("Surname").build();
Person p = Person.builder("Name").surname("Surname").name("").build();
Person p = new Person.PersonBuilder().build;

lombok是否提供了其他技术来实现以下目标:

 Person p = Person.builder("Name").surname("Surname").build();

注意:不应公开builder()和name()。创建Person对象的唯一方法应该在上面或下面:

 Person p = Person.builder("Name").build();

共有1个答案

柴博
2023-03-14

你真的不能用龙目岛来做这件事,请看库作者的解释。但你一个人滚这个建筑工有那么复杂吗?

public static class PersonBuilder {

    private final String name;
    private String surname;

    PersonBuilder(String name) {
        this.name = name;
    }

    public PersonBuilder surname(String surname) {
        this.surname = surname;
        return this;
    }

    public Person build() {
        return new Person(name, surname);
    }
        
}

使用与您已有的方法相同的方法:

    public static PersonBuilder builder(String name) {
        return new PersonBuilder(name);
    }
 类似资料:
  • 我在gradle项目中使用lombok,希望创建一个jar文件,但每次我执行jar任务(无论是在控制台还是eclipse ide中触发)时,我都会发现错误,我的lombok导入在我使用lombok注释的类中找不到。输出示例: 搜索了一段时间后,我发现有一个适用于gradle和lombok的插件,但在使用较新的gradle版本编译时并不真正需要。我的gradle版本是3.4.1和lombok 1.6

  • Lombok@Data annotation将在带注释的类上无声地添加字段的setter和getter。 如何在龙目岛添加基于条件的setter? lombok中有没有这样的支持 我已经在龙目岛文件中搜索了,我没有看到关于我的问题的解释。

  • 问题内容: 我有一堂课,看起来像这样: 在这里,我不得不写a,因为如果我想在使用Lombok时返回Optional,则必须声明为。这将生成一个接受的生成器方法! 还有其他方法可以使用lombok 吗? 问题答案: 答案是否定的,可能永远也不会。 您可能做错了:-) 并不是预防的替代品,也不是预防的奇特方法。这表示该问题无法回答,例如:空人员列表的平均年龄是多少。 绝对不应传递,而应尽快由调用代码取

  • 我有一个类BaseEntity: 和一个扩展类: 我正在尝试使用生成器构建播种机: 我希望Lombok使用基类baseEntity在BreedEntity中创建一个构造函数。 我读了留档,当我删除@实体anotation SuperBuilder文档时,它工作得很好 有人能更详细地解释为什么会发生这种情况吗?

  • 目前无法与Gradle和龙目岛建立新项目。 我知道这是旧版本gradle和lombok的常见问题,并在本网站上看到类似问题,但我使用的是最新版本,无法通过此问题 环境信息 Java:openjdk 13.0.1 2019-10-15(这是OpenJ9版本,不是热点版本) 建筑gradle(使用Spring初始化器构建) 我尝试过的事情 我尝试过将deps换成Lombok gradle插件,如下所述

  • 我将Lombok项目与Spring Data JPA一起使用。有没有办法将Lombok与JPA默认构造函数连接起来? 代码: 据我所知,JPA需要默认构造函数,该构造函数由注释覆盖。有什么解决办法吗? 这段代码给我错误:< code > org . hibernate . instantiation exception:entity::app . domain . model . person没有