当在Java中使用地图功能我可以做到以下几点:
import com.example.MyClass;
someStream.map(MyClass::myStaticMethod)
但在我的项目中,我们有时会使用静态导入,我怎么能引用myStaticMethod当进口是静态的?
我认为这会工作,但它不会:
import static com.example.MyClass.myStaticMethod;
someStream.map(myStaticMethod); //does not compile
为什么这个不行?上午我“坚持”用的第一个例子,还是有其他的解决方案。
让我们看一下Java语言规范,相关的部分15.13。方法参考表达式。
它列出了以下的方法来创建一个方法引用:
MethodReference:
ExpressionName :: [TypeArguments] Identifier
ReferenceType :: [TypeArguments] Identifier
Primary :: [TypeArguments] Identifier
super :: [TypeArguments] Identifier
TypeName . super :: [TypeArguments] Identifier
ClassType :: [TypeArguments] new
ArrayType :: new
请注意,所有的人包括::
令牌。
由于参数someStream.map(myStaticMethod)
不包括::
,它不是一个有效的方法参考。
这表明,你确实需要进口MyClass
(也许除了在静态导入,如果这是你的偏好),并参考方法MyClass::myStaticMethod
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句