object myClass is not a member of package <root>
import _root_.myClass
//test1.scala
import _root_.myClass
object test1 {
def main(args:Array[String]): Unit = {
println(this.getClass.getName)
}
}
//myClass.scala
case class myClass(){
}
一切...重命名类以包含 root。..请注意它们不在同一个文件中
1条答案
按热度按时间eqqqjvef1#
实际上,
myClass
不是_root_
包的成员。它在_empty_
包里。如果将所有内容都放在
mypackage
包中,则可以使用_root_
导入对于我的代码中的
myClass
,scala.reflect.runtime.universe.symbolOf[myClass].owner
返回package mypackage
。对于代码中的myClass
,它返回package <empty>
。下面引用了几句话:
https://scala-lang.org/files/archive/spec/2.13/09-top-level-definitions.html
包外的顶级定义被假定为注入到一个特殊的空包中。该包无法命名,因此无法导入。然而,空包的成员彼此可见而没有限定。
如果一个包名被隐藏了,可以通过使用特殊的预定义名称
_root_
作为前缀来引用它的完全限定名,该名称引用包含所有顶级包的最外层根包。名称
_root_
只有在用作限定符的第一个元素时才具有这种特殊表示;否则它是普通标识符。What is the root package in Scala?
scala: can't import object from root scope
Why is my object not a member of package if it's in a separate source file?