小编Rog*_*ays的帖子

为什么Java类型推断无法区分Function和Consumer?

给定以下恒等函数:

<T> Consumer<T> f(Consumer<T> c) { return c; }          // (1)
<T,R> Function<T,R> f(Function<T, R> c) { return c; }   // (2)
Run Code Online (Sandbox Code Playgroud)

我在 JDK 11 和 JDK 17 中观察到以下行为:

void _void() {}
f(x -> {});                   // okay, dispatches to (1)
f(x -> { return; });          // okay, dispatches to (1)
f(x -> { _void(); });         // okay, dispatches to (1)
f(x -> _void());              // should dispatch to (1)
|  Error:
|  reference to f is ambiguous
|    both method f(java.util.function.Function<java.lang.Object,java.lang.Object>) …
Run Code Online (Sandbox Code Playgroud)

java functional-programming

5
推荐指数
1
解决办法
221
查看次数

标签 统计

functional-programming ×1

java ×1