1. 程式人生 > >Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍

Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍

![Google Guava](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2020/image-20201022013126998.png) > 最近在看一個同學程式碼的時候,發現程式碼中大量使用了 Google 開源的 Guava 核心庫中的內容,讓程式碼簡單清晰了不少,故學習分享出 Guava 中我認為最實用的功能。 **Guava** 專案是 Google 公司開源的 Java 核心庫,它主要是包含一些在 Java 開發中經常使用到的功能,如**資料校驗**、**不可變集合**、計數集合,集合增強操作、I/O、快取、字串操作等。並且 **Guava** 廣泛用於 Google 內部的 Java 專案中,也被其他公司廣泛使用,甚至在新版 JDK 中直接引入了 **Guava** 中的優秀類庫,所以質量毋庸置疑。 使用方式直接 mavan 依賴引入。 ```xml ``` ## 資料校驗 資料校驗說來十分簡單,一是**非空判斷**,二是**預期值判斷**。非空判斷我想每一個 Java 開發者都很熟悉,一開始都經常和 `NullPointException` 打交道。處理的方式我們自然是一個 `if( xx == null)` 就能輕鬆解決。預期值判斷也是類似,檢查資料值是不是自己想要的結果即可。 即使這麼簡單的操作,我們是不是還經常出錯呢?而且寫起來的程式碼總是一行判斷一行異常丟擲,怎麼看都覺得那麼優雅。還好,現在就來嘗試第一次使用 Guava 吧。 ### 非空判斷 ```java String param = "未讀程式碼"; String name = Preconditions.checkNotNull(param); System.out.println(name); // 未讀程式碼 String param2 = null; String name2 = Preconditions.checkNotNull(param2); // NullPointerException System.out.println(name2); ``` 引入了 Guava 後可以直接使用 `Preconditions.checkNotNull` 進行非空判斷,好處為覺得有兩個,一是語義清晰程式碼優雅;二是你也可以自定義報錯資訊,這樣如果引數為空,報錯的資訊清晰,可以直接定位到具體引數。 ```java String param2 = null; String name2 = Preconditions.checkNotNull(param2,"param2 is null"); // java.lang.NullPointerException: param2 is null ``` ### 預期值判斷 和非空判斷類似,可以比較當前值和預期值,如果不相等可以自定義報錯資訊丟擲。 ```java String param = "www.wdbyte.com2"; String wdbyte = "www.wdbyte.com"; Preconditions.checkArgument(wdbyte.equals(param), "[%s] 404 NOT FOUND", param); // java.lang.IllegalArgumentException: [www.wdbyte.com2] 404 NOT FOUND ``` ### 是否越界 `Preconditions` 類還可以用來檢查陣列和集合的元素獲取是否越界。 ```java // Guava 中快速建立ArrayL