這裏介紹一款工具,用來某種程度上解釋下爲啥我在 GitHub 上 號召代碼整潔。
具體優點不在這裏贅述,核心就是能少些代碼完成同樣的功能
這款工具的名字叫做 Lombok 官網地址
安裝教程我以及怎樣在項目中引用 我就不寫了,具體去看官網視頻,但是關於安裝有兩點注意事項要說下
- 建議下載下來jar自己雙擊安裝,選擇Eclipse路徑時候選到exlipse.ini 所在的那一級目錄下,安裝完成後在這個目錄下會多一個jar包,同時eclipse.ini末尾多了這麼一句
-javaagent:lombok.jar
- 如果你是通過快捷方式啓動Eclipse ,那麼安裝完之後,可能無法啓動,原因是他忽略了配置文件的寫入,建議去目錄下重新生成快捷方式
/**
* val 的運用
* @return
*/
public String finalExample() {
// 一下兩句代碼效果一樣 區別在於 lombok 的運用
val example = new ArrayList<String>();
//final ArrayList<String> example = new ArrayList<String>();
example.add("Hello");
example.add("world");
// 一下兩句代碼效果一樣 區別在於 lombok 的運用
val foo = example.get(0);
//final String foo = example.get(0);
return foo.toLowerCase();
}
/**
* @NonNull 的運用
* 在入參列表中 加入這個註解 就可以省去 方法內部的if 爲空的判斷
* 這個註解會自動在方法內對該參數進行是否爲空的校驗,如果爲空,則拋出NPE
*/
private String id;
public void NonNullExample(@NonNull LombokUser user) {
if(user == null){
throw new NullPointerException("用戶對象爲空");
}
this.id = user.getId();
}
/**
* @SneakyThrows
* 作用就是拋出異常
* 對於擬不想處理的異常,直接在類上這樣拋出,分分鐘簡化代碼
* @param bytes
* @return
*/
@SneakyThrows(UnsupportedEncodingException.class)
public String utf2Strinig(byte [] bytes) {
return new String(bytes,"UTF-8");
}
/**
* @Getter(lazy=true)
* 這個註解的作用相當於緩存,就是我在第一次調用後這個值會一直存在,不在浪費資源去重複生成了
* 使用了getter這個annotation可以在實際使用到cached的時候生成cached,同時,Lombok會自動去管理線程安全的問題,不會存在重複賦值的問題
*/
@Getter(lazy=true)private final String lazyCache = newLazyData();
private String newLazyData() {
StringBuilder builder =new StringBuilder();
for(int i = 0; i < 10*10; ++i) {
builder.append("data" + i);
}
return builder.toString();
}