Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍
阿新 • • 發佈:2020-10-28
![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