Java本地静态方法引用速记语法

时间:2017-05-14 20:19:07

标签: 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
}

1 个答案:

答案 0 :(得分:3)

唉,没有捷径。根据{{​​3}},方法引用的语法如下:

MethodReference:
    ExpressionName :: [TypeArguments] Identifier 
    ReferenceType :: [TypeArguments] Identifier 
    Primary :: [TypeArguments] Identifier 
    super :: [TypeArguments] Identifier 
    TypeName . super :: [TypeArguments] Identifier 
    ClassType :: [TypeArguments] new 
    ArrayType :: new

在所有情况下,都有::之前的内容。

这个语法在JLS (15.13)中也不太正式地讨论。