我可以用 lambdas 鏈接 andThen 嗎?我知道我可以這樣做:myList.forEach(myConsumer1.andThen(myConsumer2));但是如果我想提供一個 lambda(e)->{ some actions }而不是myConsumer1和另一個 lambda (e)->{ some more actions }而不是myConsumer2呢?我試過了,但它不起作用。但是一般來說有可能嗎 - 也許我不知道正確的語法。PS我的問題(從實際角度來看)與標記為“可能已經回答”的問題不同 - 它完全不同,鏈接的帖子對我的問題沒有實際有用的信息 - 我不知道如何描述鱷魚是不同于愛情。
2 回答

慕婉清6462132
TA貢獻1804條經驗 獲得超2個贊
您可以這樣做,但您需要顯式轉換 lambda 表達式。
您示例中的 lambda 表達式(e)->{ some actions }
不一定是Consumer
. void accept(T t);
它可能是您自己的功能接口,具有與from相同的簽名Consumer
,但沒有andThen
方法。編譯器不知道這一點。所以你需要幫助編譯器:
list.forEach(((Consumer<Integer>) e -> someAction).andThen(i -> someMoreAction));

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
是的,您可以這樣做,但它需要正確轉換 lambda。
int[] val = { 23
};
Consumer<Integer> con = ((Consumer<Integer>) (a) ->
{
for (int i = 1; i < a; i++) {
val[0] += i;
}
}).andThen((b) -> System.out.println(val[0] * b));
con.accept(10);
添加回答
舉報
0/150
提交
取消