java優雅的處理空字符串

java優雅的處理空字符串

  可以說,在寫代碼的時候,判斷對象是否爲空,真的很討厭啊,有沒有?下面這個判空,還只是一層的,如果是好幾層的,代碼真的醜地不行。

 if(student!=null){
           student.setBrithCity(new BrithCity("Beijing"));
  }
一、Optional類

  有人會想到Optional類,於是上面代碼變成這樣子:

if(Optional.ofNullable(student).isPresent()){
           student.setBrithCity(new BrithCity("Beijing"));
   }

  這種做法,其實和上面沒啥區別,真正優雅地做法,是下面這種:

private void show(Student student) {
        Optional.ofNullable(student).
                ifPresent((stu)-> stu.setBrithCity(new BrithCity("Beijing")));
    }

  順帶提一嘴,Optional類地orElse()與orElseGet()方法,處理null也不錯,這兩個方法,在前面的值爲null,時都會返回括號裏面的內容,但是不同的是,orElse()是傳值,orElseGet()是傳入一個操作過程,這個例子傳入的是方法引用,當然lambda表達式也闊以。
  有一點要注意,orElse()方法,不管前面的值是不是null,都會執行括號裏面方法,orElseGet()只會在前面爲null值纔會觸發。

Optional.ofNullable(student).orElse(new Student());
Optional.ofNullable(student).orElseGet(Student::new);
二、Objects類

  Opentional的orElse(),orElseGet()方法,需要配合ofNullable()方法使用,Obejcts類也有類似的方法:requireNonNullElse(),requireNonNullElseGet(),
  注意,orElse()設置默認值時,可以爲null,requireNonNullElse則不可以,打開源碼可以看到內部對傳入的默認值還調用了一個判空方法:requireNonNull()。下面是示例:

 String result = Objects.requireNonNullElse(a, "Hello world");
String result = Objects.requireNonNullElseGet(a, ()->new String("HelloWold"));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章