Java 本地静态方法参考 shorthand 语法

Java local static method reference shorthand syntax

是否有 shorthand 方法来获取对本地静态方法的方法引用,就像调用方法时可以删除 this 关键字或 class 前缀一样?

显而易见的是使用 ::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 tutorial on method references.

中进行了不太正式的讨论