是否有一种简便的方法来获取对本地静态方法的方法引用,就像在调用方法时可以删除this
关键字或类前缀一样?
显而易见的是使用::myStaticMethod
,但似乎没有编译:
class MyClass {
static void myStaticMethod () {}
static Runnable runner = ::myStaticMethod; // doesn't compile
// requires MyClass prefix despite being in the same class
}
答案 0 :(得分: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)中也不太正式地讨论。