Java Lambda表達式的參數傳遞遵循以下規則:
參數類型推斷:Java編譯器可以根據上下文推斷Lambda表達式的參數類型。這意味著你不需要顯式地聲明參數類型,只需提供參數名稱即可。例如,(x, y) -> x + y
是一個有效的Lambda表達式,其中x和y的類型會被推斷為相應的函數接口的參數類型。
單個參數可省略括號:當Lambda表達式只有一個參數時,可以省略參數周圍的括號。例如,x -> x * x
是一個有效的Lambda表達式,表示計算平方的函數。
多個參數需使用括號:當Lambda表達式有多個參數時,需要使用括號將參數列表包圍起來。例如,(x, y) -> x * y
是一個有效的Lambda表達式,表示計算兩個數的乘積。
無參數時需使用空括號:當Lambda表達式沒有參數時,需要使用空括號 ()
表示。例如,() -> System.out.println("Hello World!")
是一個有效的Lambda表達式,表示打印 “Hello World!”。
參數列表中的參數名稱必須唯一:在Lambda表達式的參數列表中,每個參數名稱必須是唯一的。重復的參數名稱會導致編譯錯誤。
參數類型必須兼容:在Lambda表達式中,參數類型必須與目標函數接口的參數類型兼容。例如,如果目標函數接口的參數類型為 Integer
,那么Lambda表達式的參數類型也必須是 Integer
或其子類。
可變參數:Lambda表達式支持可變參數,允許在參數列表中使用 ...
語法。例如,(int... numbers) -> Arrays.stream(numbers).sum()
是一個有效的Lambda表達式,表示計算一組整數的和。
默認方法和靜態方法:Lambda表達式不能直接訪問目標函數接口的默認方法和靜態方法。要訪問這些方法,需要使用方法引用。例如,List::size
是一個有效的方法引用,表示獲取列表的大小。
遵循這些規則,可以確保Lambda表達式的參數傳遞正確且易于理解。