有没有一种速记方法可以获取对本地静态方法的方法引用,就像调用方法时删除this
关键字或类前缀一样?
显而易见的事情是使用::myStaticMethod
但这似乎没有编译:
class MyClass {
static void myStaticMethod () {}
static Runnable runner = ::myStaticMethod; // doesn't compile
// requires MyClass prefix despite being in the same class
}
唉,没有捷径可走。 根据 JLS (15.13(,方法引用的语法如下:
MethodReference: ExpressionName :: [TypeArguments] Identifier ReferenceType :: [TypeArguments] Identifier Primary :: [TypeArguments] Identifier super :: [TypeArguments] Identifier TypeName . super :: [TypeArguments] Identifier ClassType :: [TypeArguments] new ArrayType :: new
在所有情况下,::
之前都有一些东西.
在关于方法引用的 Java 教程中,也不太正式地讨论了此语法。