我正在尝试将 a 转换Consumer
为Runnable
. 以下代码不会在Eclipse IDE 中生成任何编译器错误。
Consumer<Object> consumer;
Runnable runnable;
Object value;
...
runnable = () -> consumer.accept(value);
以下代码在 Eclipse IDE 中生成编译器错误。
ArrayList<Consumer<Object>> list;
Object value;
...
list.
stream().
map(consumer -> () -> consumer.accept(value));
错误是:
Type mismatch: Can not convert from Stream<Object> to <unknown>.
The target type of this expression must be a functional interface.
如何帮助编译器将 a 转换Consumer
为 a Runnable
?
下面的代码解决了这个问题,但非常冗长。
map(consumer -> (Runnable) (() -> consumer.accept(value)));
有没有更简洁的方法来做到这一点?我知道我可以创建一个接受 aConsumer
并返回 a的静态方法Runnable
,但我不认为这更简洁。