Java方法引用的5種類型

Java中5中方法引用類型和對應的lambda表達式。

package otaku.lambda;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.function.Function;

public class MethodReference {
	
	public static void main(String[] args) {
		//lambda
		strToIntFunc("1", str -> Integer.parseInt(str));
		//靜態方法引用,靜態方法和函數接口Function參數和返回值要一致
		strToIntFunc("1", Integer::parseInt);
		
		//lambda
		dateFormat(new Date(), str -> new SimpleDateFormat("yyyyMMdd").format(str));
		//實例方法引用,這種用法和靜態方法引用類似,區別只是方法是實例還是靜態
		dateFormat(new Date(), new SimpleDateFormat("yyyyMMdd")::format);
		
		//lambda
		changeStrFormat("ABC", str -> str.toLowerCase());
		//無限制的實例方法引用,注意這裏,toLowerCase是實例方法,但具體的對象是作爲參數傳進來的
		changeStrFormat("ABC", String::toLowerCase);
		
		//lambda
		newIntArray(4, len -> new int[4]);
		//構造器方法引用,根據傳入的參數,構造數組返回
		newIntArray(4, int[]::new);
		
		//lambda
		strToIntFunc("1", str -> new Integer(str));
		//構造器方法引用
		strToIntFunc("1", Integer::new);
	}
	
	public static int[] newIntArray(int len, Function<Integer, int[]> func) {
		return func.apply(len);
	}
	
	public static String changeStrFormat(String str, Function<String, String> func) {
		return func.apply(str);
	}
	
	public static String dateFormat(Date date, Function<Date, String> func) {
		return func.apply(date);
	}
	
	public static Integer strToIntFunc(String str, Function<String, Integer> func) {
		return func.apply(str);
	}
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章