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
在所有情况下,::
之前都有内容。
中进行了不太正式的讨论
是否有 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
在所有情况下,::
之前都有内容。