我正在使用scala 2.11.0
我注意到StringBuilder是在scala.collection.mutable.StringBuilder和java.lang.StringBuilder中定义的。我还注意到scala隐式导入java.lang。,scala。,scala.Predef ._
为什么我在编写时使用scala.collection.mutable.StringBuilder而不是java.lang.StringBuilder
val def = new StringBuilder
感谢
答案 0 :(得分:3)
您可以通过查看package.scala
来检查scala导入的内容第74-45行按
导入StringBuildertype StringBuilder = scala.collection.mutable.StringBuilder
val StringBuilder = scala.collection.mutable.StringBuilder
答案 1 :(得分:2)
因为默认情况下所有here都可用。即scala._
默认可用。
在该包对象中,您可以看到:
type StringBuilder = scala.collection.mutable.StringBuilder
这就是new StringBuilder
执行scala.collection.mutable.StringBuilder
而非java.lang.StringBuilder
答案 2 :(得分:0)
Scala使用类型别名来确保核心scala类型在没有导入的情况下可用。
此链接也会有所帮助 - Understanding what 'type' keyword does in Scala
请注意,由于类型别名声明位于Scala包对象中,并且scala._是隐式导入的,因此它会将类型别名声明带入每个编译单元的作用域。