拥抱 lombok - 通过简单注解去掉臃肿的Java代码,提升代码可读性
2018-01-16 10:11
543 查看
拥抱 lombok - 通过简单注解去掉臃肿的Java代码,提升代码可读性
注意 : 使用lombok不要使用IDEA自动导入的Java的Getter和Setter的包,不然会报错。1.去掉Getter 和 Setter的代码
// 注解 @Getter @Setter public class User{ privite Integer age; privite String name; } // lombok会自动生成Getter 和 Setter方法 // 默认生成的是public的,并且Set方法是void的, // @Getter(access = AccessLevel.PROTECTED) 可以设置权限
2.去掉toString代码
@ToString public class User{ privite String name; } // 自动添加ToString方法。 // 格式:"User(name=" + name + ")";
3.去掉hashCode和equals代码
// 生成hashCode()和equals()方法,默认情况下,它将使用所有非静态,非transient字段。 // 但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。 @EqualsAndHashCode(exclude={"id", "shape"}) public class EqualsAndHashCodeExample { private transient int transientVar = 10; private String name; private double score; private Shape shape = new Square(5, 10); private String[] tags; private transient int id; public String getName() { return this.name; } @EqualsAndHashCode(callSuper=true) public static class Square extends Shape { private final int width, height; public Square(int width, int height) { this.width = width; this.height = height; } } }
4.初始化检查
// @NoArgsConstructor生成一个无参构造方法。 // 当类中有final字段没有被初始化时,编译器会报错,此时可用@NoArgsConstructor(force = true),然后就会为没有初始化的final字段设置默认值 0 / false / null。 // 对于具有约束的字段(例如@NonNull字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。 import lombok.NoArgsConstructor; import lombok.NonNull; @NoArgsConstructor(force = true) public class User { @NonNull private Integer id; @NonNull private String name; private final String phone ; }
5.构造方法
// @RequiredArgsConstructor会生成构造方法(可能带参数也可能不带参数),如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段 // @RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的 @RequiredArgsConstructor public class User { @NonNull private Integer id ; @NonNull private String name = "foobar"; private final String phone; } // 生成全参数构造方法 @AllArgsConstructor @AllArgsConstructor public class User { @NonNull private Integer id ; @NonNull private String name = "foobar"; private final String phone; }
6.聚合注解
@Getter @Setter @ToString @EqualsAndHashCode @RequiredArgsConstructor // 基本功能,没个都写,没意思,@Data一键搞定 @Data
7.lombok控制
// 该注解有三个属性 @Accessors // 1.fluent boolean值,默认为false。 // - 此字段主要为控制生成的getter和setter方法前面是否带get/set // 2.chain boolean值,默认false。 // - 如果设置为true,setter返回的是此对象,方便链式调用方法 // 3.prefix 设置前缀 // - 例如:@Accessors(prefix = "abc") private String abcAge 当生成get/set方法时,会把此前缀去掉
8.函数构建器
@Builder public class BuilderInLombok { private Integer age; private String name; private boolean sex; public static void main(String[] args) { BuilderInLombok.builder() .age(17) .name("foobar") .sex(true) .build(); } }
9.更新注解
@Synchronized @Wither @onX @Delegate etc.
Lombok官方 features - all
相关文章推荐
- 2.2、Android Studio通过注解提升代码检测
- lombok 简化java代码注解 理解
- Lombok 简化java代码注解
- 提升java代码可读性应注意的几个细节
- Lombok 简化java代码注解
- 2.2、Android Studio通过注解提升代码检测
- Java中三种简单注解介绍和代码实例
- Lombok 简化java代码注解
- Lombok 简化java代码注解
- Lombok 简化java代码注解
- Lombok 简化java代码注解
- 通过Java正则表达式去掉SQL代码中回车换行和多余空格
- Lombok 简化java代码注解
- Lombok 简化java代码注解
- lombok 简化java代码注解 理解
- Lombok 简化java代码注解
- lombok 简化java代码注解 理解
- Lombok 简化java代码注解
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- lombok 简化java代码注解 理解