该框架会自动生成某些方法(虽然这些方法可以使用AndroidStudio的快速生成), 但是代码量增加影响阅读性.
我希望我的POJO只存在字段即可;
- 添加依赖
compile "org.projectlombok:lombok:1.16.18" annotationProcessor 'org.projectlombok:lombok:1.16.18'复制代码
插件和依赖需要都添加才有效
- 安装插件
- 启动animation progress
File
/DefaultSettings
/ Compiler, Annotation Processors
. 点击启用Annotation Processing
使用方法
构造方法
- @NoArgsConstructor
- @RequiredArgsConstructor
- @AllArgsConstructor
无参构造
@NoArgsConstructor(access = AccessLevel.PUBLIC, force = true, staticName = "of")public class User { private String name; private int age;}复制代码
- access 创建的构造方法的权限 默认
public
- force 对于final字段是否默认初始化
- staticName 是否生成静态方法创建实例(并且私有同参数构造方法)
有参构造
默认实现的有参构造方法只会实现 被final和@NonNull修饰的字段
@AllArgsConstructor要求所有字段都要作为构造方法参数, 不过不需要被@NonNull和Final修饰
@Getter/@Setter
@Getter@Setterpublic class User { private String name; private int age; public User(String name, int age) { this.age = age; this.name = name; }}复制代码
@ToString
自动生成toString()
方法
@EqualsAndHashCode
自动生成Eaquls和HashCode的方法. 等同于IDE生成的.
@Builder
User user1 = User.builder().name("吴彦祖").age(22).build();复制代码
@Data
该注解等同于同时使用了以下注解
- @see Getter
- @see Setter
- @see RequiredArgsConstructor
- @see ToString
- @see EqualsAndHashCode
- @see Value
@Value
和@Data
的区别就是会给所有没有被@NonFinal
注解修饰的字段或者方法全部Final. 并且没有Setter
方法
并且被@Value
修饰的类也将被Final修饰, 无法被继承.
@Cleanup
被该注解标注的对象会进行自动关流;
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(); }}复制代码
@NonNull
被该注解标注的变量会自动抛出空指针异常,需要自己捕捉异常, 否则程序崩溃;
val
无类型的本地变量. 类似JavaScript数据类型. 插件会根据上下文推断出数据类型;
@Synchronized
被注解修饰的方法或者变量会自动添加同步锁
@Singular
只能和@Builder
注解配合使用
@Singular("ba_mei") private Listgirls;// 使用User.builder().ba_mei("新亘结衣").clearGirls();复制代码
@Accessors
@Data@Accessors(chain = true, fluent = true, prefix = "n")public class User { private String nAme = ""; private Integer age; @Singular("ba_mei") private Listgirls;}复制代码
- chain Builder模式的Setter
- fluent 直接使用
字段名()
的构造方法 - prefix 对于驼峰命名有效, 忽略前缀