如何優雅的判斷null

2021-10-05 22:45:50 字數 1217 閱讀 8654

string a = "a";

string b = "ab";

//判斷空 返回true

objects.isnull(a);

//判斷不等於null 返回true

objects.nonnull(a);

對於 integer 的判空,可以使用 optional.ofnullable 來構造乙個 optional,然後使用 orelse(0) 把 null 替換為預設值再進行 +1 操作。

對於 string 和字面量的比較,可以把字面量放在前面,比如"ok".equals(s),這樣即使 s 是 null 也不會出現空指標異常;

integer a1 = 1;

optional.ofnullable(a1);

optional.ofnullable(a1).equals(a);

optional.ofnullable(a1).get();

optional.ofnullable(a1).orelse(a1++);

而對於兩個可能為 null 的字串變數的 equals 比較,可以使用 objects.equals,它會做判空處理。

objects.equals(a,a1);
對於 concurrenthashmap,既然其 key 和 value 都不支援 null,修復方式就是不要把 null 存進去。hashmap 的 key 和 value 可以存入 null,而 concurrenthashmap 看似是 hashmap 的執行緒安全版本,卻不支援 null 值的 key 和 value,這是容易產生誤區的乙個地方。對於類似 fooservice.getbarservice().bar().equals(「ok」) 的級聯呼叫,需要判空的地方有很多,包括 fooservice、getbarservice() 方法的返回值,以及 bar 方法返回的字串。如果使用 if-else 來判空的話可能需要好幾行**,但使用 optional 的話一行**就夠了。對於 rightmethod 返回的 list,由於不能確認其是否為 null,所以在呼叫 size 方法獲得列表大小之前,同樣可以使用 optional.ofnullable 包裝一下返回值,然後通過.orelse(collections.emptylist()) 實現在 list 為 null 的時候獲得乙個空的 list,最後再呼叫 size 方法

jdk8 特性 使用optional處理null

如何優雅的寫多層if判斷

前言 在日常專案中,我們經常會使用到if來進行判斷,可是多層的時候,你就會發現 很累贅 需求現在有4個產品,分別是手機 電腦 電視機 遊戲機,當然每個產品顯示的 不一樣 if判斷 看到這樣的需求,第一時間寫個if判斷,簡單快速,我們來看看 let commodity if commodity.pho...

ios 如何判斷null型別

在ios中,介面經常返回null,有時候又返回空字串,有時候又返回 null 甚至,利用isequaltostring null,null nil,nil比較後均得不到正確結果,甚至連string.length 0來判斷依然不行,但是實際上這個str確實是空的。那這個時候該如何判斷才能正確呢?用ns...

Velocity中如何判斷null

相信這個問題是很多使用velocity的朋友所經常碰到的,大家可能非常期望下面這樣的 能夠執行 if foo null end 實際上這段 會報錯。這是因為velocity中對null的支援比較特別。上說,判斷是否為null有下面幾種方法 1.if foo 判斷 foo為空,判斷非空為 if foo...