【lombok】@NoArgsConstructor/@RequirArgsConstructor/@AllArgsConstructor - 生成无参构造器,指定参数构造器或包含所有参数的构造器 男娘i 2022-03-20 11:46 514阅读 0赞 这三个注解的集合接受某些字段的一个参数,简单的用于分配这个参数给这个字段。 `@NoArgsConstructor`生成的构造器无参数。如果这是不可能的(因为有final字段),则会导致编译错误。 除非使用`@NoArgsConstructor(force=true)`,然后将所有的final字段都初始化为`0`/`false`/`null`。 对于有约束的字段,比如`@NonNull`,不会生成任何检查,所以请注意直到这些字段都适当的被初始化后,才会满足这些约束条件。 某些java构造器,比如hibernate和服务提供接口需要无参构造器。这个注解主要同`@Data`或者其他生成构造器的注解一起使用。 `@RequirArgsConstructor`为每个需要特殊处理的字段生成一个字段与参数对应的构造器。所有未初始化的final字段都获得一个参数, 以及标识为`@NonNull`的任何字段,这些字段在申明它们时未初始化。对于这些标记为`@NonNull`的字段,明确的Null检查也会跟着生成。 如果任意标记`@NonNull`字段的参数包含`null`,则构造器会抛出空指针异常。这些参数的排序同这些字段在类里出现的顺序一致。 `@AllArgsConstructor`在你的类中生成一个将所有字段作为参数的构造器。标记为`@NonNull`的字段将生成对应的null检查。 所有的这些注解都支持替换格式,生成的构造器都是私用的,然后会生成一个额外的封装私有构造器的静态工厂方法。 这个模式通过在注解内使用`staticName`开启,比如`@RequiredArgsConstructor(staticName="of")`。和普通构造器不一样, 该静态工厂方法可以推断泛型。也就是说你的API调用方可以使用`MapEntry.of("foo", 5)`而不是`new MapEntry<String, Integer>("foo", 5)`。 想要将注解放置在生成的构造器上,可以通过使用`onConstructor=@__({@AnnotationsHere})`,但是请小心,这只是一个实验阶段功能。 更多的信息请参考文档的`onX`功能。 这些注解会跳过静态字段。 同其他lombok注解不一样的是,指定构造器的出现不会阻碍这些注解生成它们自己的构造器。这也意味着你可以编写你自己专门的构造器, 并让lombok生成样板文件。如果出现冲突(专门的构造器和lombok生成的签名一致),会引发编译错误。 使用Lombok import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.AllArgsConstructor; import lombok.NonNull; @RequiredArgsConstructor(staticName = "of") @AllArgsConstructor(access = AccessLevel.PROTECTED) public class ConstructorExample<T> { private int x, y; @NonNull private T description; @NoArgsConstructor public static class NoArgsExample { @NonNull private String field; } } 不使用Lombok public class ConstructorExample<T> { private int x, y; @NonNull private T description; private ConstructorExample(T description) { if (description == null) throw new NullPointerException("description"); this.description = description; } public static <T> ConstructorExample<T> of(T description) { return new ConstructorExample<T>(description); } @java.beans.ConstructorProperties({ "x", "y", "description"}) protected ConstructorExample(int x, int y, T description) { if (description == null) throw new NullPointerException("description"); this.x = x; this.y = y; this.description = description; } public static class NoArgsExample { @NonNull private String field; public NoArgsExample() { } } }
相关 Java反射机制理解:无参构造器示例 在Java中,反射(Reflection)是一种强大且复杂的机制。它允许我们在运行时检查类、方法和字段的信息。 无参构造器是每个类在创建实例时默认调用的方法。如果没有显式定义 末蓝、/ 2024年11月28日 18:42/ 0 赞/ 69 阅读
相关 MyBatisPlus条件构造器排序方法orderByDesc参数怎样构造 场景 项目搭建专栏: [https://blog.csdn.net/BADAO\_LIUMANG\_QIZHI/column/info/37194][https_blo 比眉伴天荒/ 2023年10月18日 17:37/ 0 赞/ 171 阅读
相关 Java构造方法(构造器) 目录 1.什么是构造方法? 2.构造方法的使用 -------------------- 1.什么是构造方法? 构造方法(也称构造器 constructor):是 电玩女神/ 2023年10月14日 11:19/ 0 赞/ 21 阅读
相关 Java 继承之后构造器的特点、为什么子类构造器会先调用父类无参构造器 继承后构造器的特点: 子类的全部构造器默认一定会先访问父类的无参数构造器,再执行子类自己的构造器。 为什么子类构造器会先调用父类无参构造器? 1. 子类的构造器的第 悠悠/ 2023年02月20日 07:04/ 0 赞/ 14 阅读
相关 Scala主构造器和辅助构造器 类比下 Java构造器 Java构造器 基本语法 [修饰符] 方法名(参数列表) { 构造方法体 } 细节说明 1)在 Java 中一个 忘是亡心i/ 2023年01月13日 14:59/ 0 赞/ 213 阅读
相关 java方法参数、重载与构造器 方法参数有两种调用类型,一是按按值调用,表示方法接收的是调用者提供的值。二是引用调用,表示方法接收的是调用者提供的变量地址。方法可以修改传递引用所对应的变量值,而不能修改传递值 分手后的思念是犯贱/ 2022年12月29日 14:13/ 0 赞/ 159 阅读
相关 Effective Java -- 使用构造器(Builder)替代多参数构造器 > 此系列文章为本人对《Effective Java》一书的学习笔记,主要是使用自己的语言和代码描述对书中重点内容的理解。 > 既然有缘看到此文,那么希望能对你有所帮助。 小鱼儿/ 2022年12月02日 04:03/ 0 赞/ 211 阅读
相关 构造器 构造器的作用:创建对象 构造器格式:访问修饰符 类名(参数列表) \{ \} 为什么不写返回类型呢?因为本身构造器的作用就是返回一个对象,不允许更改其返 小灰灰/ 2022年06月04日 04:47/ 0 赞/ 236 阅读
相关 【lombok】@NoArgsConstructor/@RequirArgsConstructor/@AllArgsConstructor - 生成无参构造器,指定参数构造器或包含所有参数的构造器 这三个注解的集合接受某些字段的一个参数,简单的用于分配这个参数给这个字段。 `@NoArgsConstructor`生成的构造器无参数。如果这是不可能的(因为有final字段 男娘i/ 2022年03月20日 11:46/ 0 赞/ 515 阅读
还没有评论,来说两句吧...