1. 關於Java8工具類Optional的一點使用心得
對於Java開發中遇到的npe(空指標問題),其實使用工具類Optional處理效果一般,個人感覺最大的用處就是可以減少一定的if語句,減少一定的非空判斷,千萬不能將Optional放在if內,會非常多此一舉。
個人覺得最實用的例子:
如果獲取不到student的name屬性(為空),那麼將使用student的rename屬性,即使rename、name為空,也不會出現空指標異常。
import lombok.Data;
import java.util.Optional;
public class qwe {
//java fhadmin.cn
public static void main(String[] args) {
Student student = new Student();
student.setReName("tom");
Student student1 = new Student();
student1.setName( Optional.ofNullable(student.getName()).orElseGet(student::getReName)); //
System.out.println(student1);
}
@Data
static class Student{
String name;
String reName;
}
}
2. 工具類
package com.ven.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* java 8 Optional 工具類
* @author fhadmin
* @from fhadmin.cn
* @ version 1.0
*/
public class OptionalUtil {
/**
* 判斷輸入的字串是否為空
* @param str String
* @return
*/
public static boolean isEmpty(String str){
return Optional.ofNullable(str).isPresent();
}
/**
* 判斷輸入的Integer是否為空
* @param num Integer
* @return
*/
public static boolean isEmpty(Integer num){
return Optional.ofNullable(num).isPresent();
}
/**
* 判斷輸入的Double是否為空
* @param dnum Double
* @return
*/
public static boolean isEmpty(Double dnum){
return Optional.ofNullable(dnum).isPresent();
}
/**
* 判斷輸入的Object是否為空
* @param obj
* @return
*/
public static boolean isEmpty(Object obj){
return Optional.ofNullable(obj).isPresent();
}
/**
* 判斷輸入的List是否為空,獲取該物件
* @param obj
* @return
*/
public static Object get(Object obj){
return Optional.ofNullable(obj).isPresent()!=false?Optional.ofNullable(obj).get():null;
}
/**
* 測試
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
List<String> objList = (List<String>) OptionalUtil.get(list);
objList.forEach(item->{System.out.println(item);});
String str = null;
System.out.println("當前物件:"+OptionalUtil.get(str));
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結