package com.chunzhi.Test06StaticMethodReference; /* 通過類名引用靜態成員方法 類名已經存在,靜態成員變量方法也已經存在 就可以通過類名直接引用靜態成員方法 */ public class Test01StaticMethodReference { // 定義一個方法,方法的參數傳遞要計算絕對值的整數,和函數式接口Calculable public static int method(int number, Calculable c) { return c.calAbs(number); } public static void main(String[] args) { // 調用method方法,傳遞計算絕對值的整數,和Lambda表達式 int number = method(-10, (int num) -> { // 對參數進行絕對值的計算,並返回結果 return Math.abs(num); // abs是靜態方法,可以通過類名直接調用 }); System.out.println(number); /* 使用方法引用優化Lambda表達式 Math類是存在的 abs計算絕對值的靜態方法也是存在的 所以我們可以直接通過類名引用靜態方法 */ int number02 = method(-20, Math :: abs); System.out.println(number02); } }
函數式接口Calculable接口:
package com.chunzhi.Test06StaticMethodReference; @FunctionalInterface public interface Calculable { // 定義一個抽象方法,傳遞一個整數,對整數進行絕對值計算並返回 public abstract int calAbs(int number); }