Scala导入语句中`object`的反引号`有何含义?
关于Scala导入语句中反引号`的作用解释
嘿,这个问题问得很到位!我来给你拆解下这条导入语句里反引号的核心作用:
解决关键字冲突问题:Scala里有很多预留的关键字,比如
object、class、def等等,这些词是语言本身要用的,不能直接当作普通的标识符(比如包名、类名、对象名)来使用。但你这里导入的Java库(org.javaswift.joss是Java写的OpenStack Swift客户端)里,刚好在org.javaswift.joss.command.impl下面有一个名为object的子模块/对象——Java里并没有object这个关键字,所以Java代码可以用这个名字。这时候在Scala里要引用这个叫
object的模块,就必须用反引号把它包裹起来,相当于告诉Scala编译器:“别把这个object当成关键字,我就是要引用这个叫object的具体东西!”要是你去掉反引号直接写
import org.javaswift.joss.command.impl.object._,编译器立刻会报错,因为它会把object当作关键字解析,完全搞不懂你的意图。反引号的其他场景:除了处理导入时的关键字冲突,Scala里反引号还有这些实用用法:
- 定义和关键字同名的变量/值,比如
valreturn= 20 - 调用Java类中名字和Scala关键字冲突的方法,比如Java类里有个
def stop()方法,Scala里调用就要写成obj.stop``()
- 定义和关键字同名的变量/值,比如
内容的提问来源于stack exchange,提问作者BAE
相关产品推荐
相关产品推荐

