Lombok消除冗长的Java代码
来源:互联网 发布:天猫比淘宝有什么优势 编辑:程序博客网 时间:2024/05/25 19:59
1. 简介
Lombok提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码,即利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。代码越少,意味着出bug的可能性越低。
参考博客:https://projectlombok.org/features/index.html
2. 使用
首先要安装Lombok插件,然后导入相关jar包,就可以在代码里面使用注解来简化代码
1)val
val用来修饰局部变量,不用写具体的类型,通过初始化的表达式推出其类型,这个局部变量是final的
public String example() { val example = new ArrayList<String>(); example.add("Hello, World!"); val foo = example.get(0); return foo.toLowerCase();}public void example2() { val map = new HashMap<Integer, String>(); map.put(0, "zero"); map.put(5, "five"); for (val entry : map.entrySet()) { System.out.printf("%d: %s\n", entry.getKey(), entry.getValue()); }}
2)@NonNull
确保方法或构造器的参数不为null,如果为null,则抛出异常
public class NonNullExample { private String name; public NonNullExample(@NonNull Person person) { this.name = person.getName(); }}
3)@Cleanup
保证资源的释放
public static void main(String[] args) throws IOException { //调用close方法来释放资源,也可以指定调用的方法 @Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]); byte[] b = new byte[1024]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); }}
4)@Getter And @Setter
自动生成POJO里面的getter方法和setter方法
public class GetterSetterExample { @Getter @Setter private int age = 10; //setName方法的访问权限为protected @Setter(AccessLevel.PROTECTED) private String name;}
5)@ToString
自动生成toString方法
//排除id属性 @ToString(exclude="id") public class ToStringExample { private static final int STATIC_VAR = 11; //常量自动排除 private String name; private String[] tags; private int id; }
6)@EqualsAndHashCode
自动生成equals和hashCode方法
@EqualsAndHashCode(exclude={"id"}) public class EqualsAndHashCodeExample { private transient int transientVar = 11; //不参与 private String name; private double score; private String[] tags; private int id; //排除 }
7)NoArgsConstructor, @AllArgsConstructor,@RequiredArgsConstructor
自动生成构造器
//@NonNull声明的属性会自动生成该变量的构造器 或者final属性@RequiredArgsConstructor(staticName = "of")@AllArgsConstructor(access=AccessLevel.PROTECTED)public class ConstructorExample<T> { private int x, y; @NonNull private T description; //不能赋null @NoArgsConstructor public static class NoArgsExample { private String field; }}
8)@Data
@Data 等价于@ToString, @EqualsAndHashCode, @Getter / @Setter and @RequiredArgsConstructor的组合
@Data public class DataExample { private final String name; //会生成构造函数 @Setter(AccessLevel.PACKAGE) private int age; private double score; private String[] tags; }
0 0
- Lombok - 消除冗长的 java 代码
- Lombok推荐,消除冗长的java代码
- Lombok - 消除冗长的 java 代码
- Lombok - 消除冗长的 java 代码
- Lombok消除冗长的Java代码
- lombok - 消除冗长的java代码
- lombok 消除冗长的java代码
- 使用Lombok消除冗长的java代码
- Lombok安装-消除冗长的 java 代码
- Lombok 消除冗长的 java 代码
- Lombok 消除Java的冗长
- 维护代码简洁,使用lombok消除冗长的Java代码
- Lombok------Spice up your java(消除冗长的Java代码)
- Lombok 安装、入门 - 消除冗长的 java 代码
- Lombok 安装、入门 - 消除冗长的 java 代码
- Lombok 安装、入门 - 消除冗长的 java 代码
- Lombok 安装、入门 - 消除冗长的 java 代码
- Lombok 安装、入门 - 消除冗长的 java 代码
- Android开发之ListView的使用
- awk 字符串连接操作(字符串转数字,数字转字符串)
- Nginx做反向代理
- PAT 1049Recover the Smallest Number (30)
- PAT乙级(Basic Level)1002(C++)
- Lombok消除冗长的Java代码
- 动态规划----Triangle
- os x下证书的导入
- Java7一些知识
- awk 数组排序多种实现方法
- awk 查看ip连接数(常见应用一)
- 制作Unity插件之-常用GUI绘制组建
- MySQL简介
- Day1:leetcode136 && filter palindrome &&闭包及返回函数