java好用工具類,解決空指針帶來的煩惱

使用事例如下:

		//在可能會引起空指針的地方使用els(user,方法引用)
		//即使user對象爲null,也不會拋出異常,直接返回null
		
	    //如果user不爲空,獲取年齡
	    String els = els(user,User::getAge);
	    System.out.println(els);
	    
	    //如果年齡爲null,使用默認值
	    String age = els(user,User::getAge,"123");
	    System.out.println(age);
	    
	    //如果age不爲null,轉爲Integer
	    String str="123";
	    Integer els2 = els(str,Integer::valueOf);
	    System.out.println(els2);
	    
	    //如果年齡爲null,使用默認值
	    String a=null;
	    Integer a1 = els(a,Integer::valueOf,123);
	    System.out.println(a1);

源碼如下

public class Check{
	/**
	 * if not null return ? if null return null
	 *
	 * @param r
	 * @param a
	 * @param   <R>
	 */
	public static <R, T> T els(R r, SFunction<R, T> a) {
		if (null == r) {
			return null;
		}
		return (T) a.apply(r);
	}

	/**
	 * if not null return ? if null return defaultValue
	 *
	 * @param r
	 * @param a
	 * @param   <R>
	 */
	public static <R, T> T els(R r, SFunction<R, T> a, T defaultValue) {
		if (null == r) {
			return defaultValue;
		}
		T t = (T) a.apply(r);
		return t == null ? defaultValue : t;
	}
}
package com.dqw.check;

import java.io.Serializable;
@FunctionalInterface
public interface SFunction<T, R> extends Serializable{
	/**
	 * 
	 * <p>Title: apply</p>  
	 * <p>Description: </p>  
	 * @param t
	 * @return
	 */
	R apply(T t);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章