在Java 8中,方法引用部分的调用总是可以括起来吗?

时间:2014-10-17 17:54:26

标签: java-8 overloading

假设我有一个类型正确的Java方法调用,例如

f.g(5)

Java 8现在允许方法引用,因此在大多数情况下,现在可以编写

(f::g)(5)

其中f::g变为lambda函数,然后被调用。

问题:即使在f::g超载或者超载会干扰两步过程的情况下,这总是可行的吗?如果在参数类型已知之前必须在方法引用级别发生重载确定,则会发生这种情况。

动机:我正在编写类似编译器的代码,这就是我需要理解这些微妙之处的原因。我知道调用中的括号方法引用不是必要的软件工程实践。

1 个答案:

答案 0 :(得分:4)

没有

但是,我认为您对此功能的含义感到困惑。上述f.g中的话语不是方法参考;它甚至都不是表达。

方法引用是一个看起来像Foo::bar的表达式,可以转换为功能接口类型。