我想一個簡單的Java功能轉換爲拉姆達8功能,不帶任何參數,然後調用它:lambda函數在Java中8,沒有參數和返回值
public int getMissing() {
return 0;
}
如何上面java8拉姆達轉換格式?
我想一個簡單的Java功能轉換爲拉姆達8功能,不帶任何參數,然後調用它:lambda函數在Java中8,沒有參數和返回值
public int getMissing() {
return 0;
}
如何上面java8拉姆達轉換格式?
目前尚不清楚你打算用這個值做什麼,但發電機的形式() -> Int
- 有點像,
IntStream.generate(() -> 0).limit(1).forEach(System.out::println);
如果省略了limit(1)
那麼你會得到零無限多,如果您需要保留訂單使用forEachOrdered
(而不是forEach
)。
要有一個lambda函數,你不需要輸入任何東西或輸出任何東西。
Java代碼的入口點需要具有特定的格式,如文檔中所述。
http://docs.aws.amazon.com/lambda/latest/dg/get-started-step4-optional.html
你可以使用任何代碼轉換器轉換成Java代碼,按照上面的入口點指示,上傳和調用外部URL(通過API網關)或測試與AWS控制檯測試按鈕。
你的情況是Supplier
在Java中8
Supplier<Integer> supplier =() -> 0;
System.out.println(supplier.get());
LAMBDA解決類似的問題,與匿名的類和接口HAVA的一種方法。 Java8具有預定義的函數接口(Function,Predicate,Consumer),它們都接受參數。您可以定義沒有參數的自定義功能界面。
你不直接將方法轉換爲lambda表達式。 Lambda是或多或少地實現了功能接口,而無需傳統匿名內部函數方法的開銷。
所以,如果你想把它作爲一個lambda來傳遞,你需要找到一個匹配的Functional Interface併爲它指定一個lambda。
在這種情況下,你必須不帶參數,返回一個int
和可能的選擇之一是使用IntSupplier
的方法:
IntSupplier supplier =() -> 0;
現在,您可以通過調用它:
supplier.getAsInt()
如果你想返回一個盒裝Integer
,你需要使用一個通用的Supplier<T>
:
Supplier<Integer> supplier =() -> 0;
supplier.get(); // 0
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html – pvg