lambda表达式中的参数类型不兼容

考虑到这段代码:

Map<C1, C2> map;
C1 key;
C2 value;

为什么这样做:

map.computeIfAbsent(key, k -> value)

而这不是?

map.computeIfAbsent(key, () -> value)

回答

因为方法computeIfAbsent具有以下签名:

default V computeIfAbsent(K key,
                          Function<? super K,? extends V> mappingFunction)

所以它需要 a Function,它是一个函数接口,需要一个参数并返回一个值。而() -> value, 不接收任何参数并产生一个值(例如,供应商)。


以上是lambda表达式中的参数类型不兼容的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>