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;
}
複製代碼
字段名()
的構造方法