Scala项目重写Java类match方法报错:identifier expected but 'match' found
问题原因与解决方法
嘿,这个问题我之前也碰到过!核心原因很简单:match是Scala的保留关键字,当你直接用它作为方法名去重写Java类的方法时,Scala编译器会把它当成语法关键字处理,而不是普通的方法标识符,所以才会抛出"identifier expected but 'match' found"的错误。
毕竟Java里并没有把match列为关键字,所以那个Java类能正常定义名为match的方法,但Scala对关键字的限制更严格,直接用就会触发语法错误。
怎么解决?用反引号把方法名包起来就行
在Scala里,如果非要用保留关键字当标识符(比如方法名、变量名),只需要用**反引号(`)**把它包裹起来,编译器就会把它当作普通名称处理了。
给你举个具体的例子:
假设你的Java类长这样:
public class JavaMatchClass { public void match(String input) { // 原方法逻辑 } }
那在Scala中重写这个方法时,得写成这样:
class ScalaMatchClass extends JavaMatchClass { override def `match`(input: String): Unit = { // 你的重写实现逻辑 } }
这样编译器就会正确识别match是一个方法名,而不是Scala的模式匹配关键字,编译就能顺利通过啦。
内容的提问来源于stack exchange,提问作者tan shai
相关产品推荐
相关产品推荐

