假设我有一个类型正确的Java方法调用,例如
f.g(5)
Java 8现在允许方法引用,因此在大多数情况下,现在可以编写
(f::g)(5)
其中f::g
变为lambda函数,然后被调用。
问题:即使在f::g
超载或者超载会干扰两步过程的情况下,这总是可行的吗?如果在参数类型已知之前必须在方法引用级别发生重载确定,则会发生这种情况。
动机:我正在编写类似编译器的代码,这就是我需要理解这些微妙之处的原因。我知道调用中的括号方法引用不是必要的软件工程实践。
答案 0 :(得分:4)
没有
但是,我认为您对此功能的含义感到困惑。上述f.g
中的话语不是方法参考;它甚至都不是表达。
方法引用是一个看起来像Foo::bar
的表达式,可以转换为功能接口类型。