You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用@NonNull通过Lombok @RequiredArgsConstructor生成指定构造器

解决仅生成含name属性构造器的问题

我明白你的困扰——想用Lombok生成只包含name的构造器,但name允许为null、不能设为final,用@NonNull虽然能实现但不符合你的场景。下面给你几个可行的方案:

  • 手动编写构造器(最直接省心)
    其实单个属性的构造器代码量极小,完全不需要依赖Lombok的特殊配置,直接写就行:

    public YourClassName(String name) {
        this.name = name;
    }
    

    这样既满足name可为null的要求,也不用把它设为final,完美匹配你的场景。

  • 用@Builder间接实现实例创建
    如果你坚持想用Lombok生成相关逻辑,可以使用@Builder注解。它会生成Builder模式的代码,你可以只设置name(甚至设为null)来创建实例:

    // 给你的类添加@Builder注解
    @Builder
    public class YourClassName {
        private String name;
        // 其他属性...
    }
    
    // 创建实例的方式
    YourClassName instance = YourClassName.builder().name(null).build();
    

    虽然这不是直接生成单个参数的构造器,但能达到同样的创建效果,而且Lombok帮你处理了所有Builder的冗余代码。

  • 混合使用Lombok注解+自定义构造器
    如果你需要Lombok帮你生成getter、setter、toString等通用方法,同时自己补充这个构造器,可以搭配@Data和@NoArgsConstructor:

    @Data
    @NoArgsConstructor
    public class YourClassName {
        private String name;
        // 其他属性...
    
        // 自己添加仅含name的构造器
        public YourClassName(String name) {
            this.name = name;
        }
    }
    

    这样Lombok负责处理通用方法,你只需要写这一行构造器代码,兼顾了自动化和灵活性。

内容的提问来源于stack exchange,提问作者anfbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:20:42