无法在scala中设置一个名为type的java注释成员?

iai*_*ain 6 java scala scala-java-interop

我试图将一些Java代码移植到scala.代码使用带有成员调用的注释,type但这是scala中的关键字.有没有办法在scala中解决这个有效的java成员?

这是Java代码

@Component(
        name = "RestProcessorImpl",
        type = mediation // Compile error
        )
public class RestProcessorImpl {
 // impl
}
Run Code Online (Sandbox Code Playgroud)

这部分代码在scala中是相同的,除了它type是一个关键字,因此它不能编译.有没有办法逃避type关键字?

这也是带有type成员的java类的问题

HasType.java

package spike1;

public class HasType {
    public String type() { 
        return "the type";
    }
}
Run Code Online (Sandbox Code Playgroud)

UseType.scala

class UseType {
    def hasType = new HasType
    hasType.type() // Compile error
}
Run Code Online (Sandbox Code Playgroud)

dhg*_*dhg 15

您可以使用反引号来绕过非法标识符:

val type = 1    // error
val `type` = 1  // fine
Run Code Online (Sandbox Code Playgroud)

因此,使用您的代码,您可以这样做:

val hasType = new HasType
hasType.`type`()   // no error
Run Code Online (Sandbox Code Playgroud)