Java本地静态方法参考简写语法

Jan*_*net 5 java syntax method-reference

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

显而易见的是使用::myStaticMethod但似乎无法编译:

class MyClass {
   static void myStaticMethod () {}
   static Runnable runner = ::myStaticMethod; // doesn't compile
      // requires MyClass prefix despite being in the same class
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

唉,没有捷径。根据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
Run Code Online (Sandbox Code Playgroud)

在所有情况下,在 之前都有一些东西::

关于方法引用的 Java 教程中也不太正式地讨论了该语法。