java lombok框架
创始人
2024-02-07 07:02:22
0

@Data 的作用?

使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

@NoArgsConstructor:生成无参构造函数
@RequiredArgsConstructor:生成一个构造函数,并对打了@NonNull的参数进行NullPointer检查 (这里有坑?为啥?)
例如:

// 源代码
@RequiredArgsConstructor(staticName = "of")
class Car{@NonNullprivate String origin;@NonNullprivate String model;
}
// 编译后代码
class Car{@NonNullprivate String origin;@NonNullprivate String model;// 省略get、set方法private Car(@NonNull String origin, @NonNull String model) {if (origin == null) {throw new NullPointerException("origin is marked @NonNull but is null");} else {this.origin = origin;}if (model == null) {throw new NullPointerException("model is marked @NonNull but is null");} else {this.model = model;}}public static Car of(@NonNull String origin, @NonNull String model) {return new Car(origin, model);}
}

@AllArgsConstructor:生成全参构造函数

@NoArgsConstructor will generate a constructor with no parameters. If
this is not possible (because of final fields), a compiler error will
result instead, unless @NoArgsConstructor(force = true) is used, then
all final fields are initialized with 0 / false / null. For fields
with constraints, such as @NonNull fields, no check is generated,so be
aware that these constraints will generally not be fulfilled until
those fields are properly initialized later. This annotation is useful
primarily in combination with either @Data or one of the other
constructor generating annotations.

lombok还有什么常见用法?

上面的@Data、@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor都是lombok的注解。
其他还有:

@builder有什么用?

当一个类的属性很多,但构造时只需要其中几个属性时,更方便。

@builder的原理是什么

@builder自动实现了以下原生的builder模式

class Car{private String origin;private String model;private Car(String model){this.model = model;}private Car(Builder builder){this.origin = builder.origin;this.model = builder.model;}public static Car of(String model){return new Car(model);}public static Builder builder(){return new Builder();}public static class Builder{private String origin;private String model;public Builder origin(String origin){this.origin = origin;return this;}public Builder model(String model){this.model = model;return this;}public Car build(){return new Car(this);}}
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...