lambda表達式可以只在以下四種環(huán)境中使用。
lambda表達式可以顯示在賦值運算符的右側(cè)。
public class Main { public static void main(String[] argv) { Calculator iCal = (x,y)-> x + y; System.out.println(iCal.calculate(1, 2)); } } @FunctionalInterface interface Calculator{ int calculate(int x, int y); }
上面的代碼生成以下結(jié)果。
我們可以使用lambda表達式作為方法或構(gòu)造函數(shù)的參數(shù)。
public class Main { public static void main(String[] argv) { engine((x,y)-> x / y); } private static void engine(Calculator calculator){ long x = 2, y = 4; long result = calculator.calculate(x,y); System.out.println(result); } } @FunctionalInterface interface Calculator{ long calculate(long x, long y); }
上面的代碼生成以下結(jié)果。
我們可以在return語句中使用lambda表達式,其目標類型在方法返回類型中聲明。
public class Main { public static void main(String[] argv) { System.out.println(create().calculate(2, 2)); } private static Calculator create(){ return (x,y)-> x / y; } } @FunctionalInterface interface Calculator{ long calculate(long x, long y); }
上面的代碼生成以下結(jié)果。
我們可以使用一個lambda表達式前面加一個cast。在轉(zhuǎn)換中指定的類型是其目標類型。
public class Main { public static void main(String[] argv) { engine((IntCalculator) ((x,y)-> x + y)); } private static void engine(IntCalculator calculator){ int x = 2, y = 4; int result = calculator.calculate(x,y); System.out.println(result); } private static void engine(LongCalculator calculator){ long x = 2, y = 4; long result = calculator.calculate(x,y); System.out.println(result); } } @FunctionalInterface interface IntCalculator{ int calculate(int x, int y); } @FunctionalInterface interface LongCalculator{ long calculate(long x, long y); }
上面的代碼生成以下結(jié)果。
更多建議: