Lombok Pluginjava
该框架会自动生成某些方法(虽然这些方法可使用AndroidStudio的快速生成), 可是代码量增长影响阅读性.git
我但愿个人POJO只存在字段便可;github
compile "org.projectlombok:lombok:1.16.18"
annotationProcessor 'org.projectlombok:lombok:1.16.18'
复制代码
插件和依赖须要都添加才有效bash
File
/DefaultSettings
/ Compiler, Annotation Processors
. 点击启用Annotation Processing框架
无参构造ui
@NoArgsConstructor(access = AccessLevel.PUBLIC, force = true, staticName = "of")
public class User {
private String name;
private int age;
}
复制代码
public
有参构造this
默认实现的有参构造方法只会实现 被final和@NonNull修饰的字段spa
@AllArgsConstructor要求全部字段都要做为构造方法参数, 不过不须要被@NonNull和Final修饰插件
@Getter
@Setter
public class User {
private String name;
private int age;
public User(String name, int age) {
this.age = age;
this.name = name;
}
}
复制代码
自动生成toString()
方法指针
自动生成Eaquls和HashCode的方法. 等同于IDE生成的.
User user1 = User.builder().name("吴彦祖").age(22).build();
复制代码
该注解等同于同时使用了如下注解
和@Data
的区别就是会给全部没有被@NonFinal
注解修饰的字段或者方法所有Final. 而且没有Setter
方法
而且被@Value
修饰的类也将被Final修饰, 没法被继承.
被该注解标注的对象会进行自动关流;
public void testCleanUp() {
try {
@Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[] {'Y','e','s'});
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
复制代码
被该注解标注的变量会自动抛出空指针异常,须要本身捕捉异常, 不然程序崩溃;
无类型的本地变量. 相似JavaScript数据类型. 插件会根据上下文推断出数据类型;
被注解修饰的方法或者变量会自动添加同步锁
只能和@Builder
注解配合使用
@Singular("ba_mei") private List<String> girls;
// 使用
User.builder().ba_mei("新亘结衣").clearGirls();
复制代码
@Data
@Accessors(chain = true, fluent = true, prefix = "n")
public class User {
private String nAme = "";
private Integer age;
@Singular("ba_mei")
private List<String> girls;
}
复制代码
字段名()
的构造方法