Scala导入packageName.ClassName VS导入package._开销?

时间:2014-03-16 10:01:15

标签: scala import compilation

我是scala的新手,这可能来自java世界..
在scala中你可以这样做:

import packageName.className

或者,如果您希望导入该包中的所有类

import packageName._

这里发生了什么?什么时候编译解决方案? 我假设在我自己的课程中,每个包可能包含10-20个类,所以没有效果,但是当我这样做时会发生什么: import play.api ._

  1. 构建解决方案需要更长的时间吗?
  2. 有任何性能问题吗?最终的应用程序大小将与我假设的大小相同,因为它被引用到同一个包中并包含其中的所有类。
  3. 由于

1 个答案:

答案 0 :(得分:4)

两个问题都没有。

由于Scala来自Java世界,导入规则是相同的。

有两种导入类型:

import play.api.Controller称为单一类型导入

import play.api._被称为按需导入

这些导入都是被动的,即它们仅在需要时(实际使用类型时)加载信息,而不是仅在导入类型时加载信息。 Imports告诉编译器在需要时查找类型的位置。

因此,导入整个包而不是导入单个类型不会产生任何开销。

还有一件事要看,Scala或Java API - 有很多具有相同名称的类。

想象一下,你需要使用play.Loggerplay.api.Controller并写下这样的导入:

import play._
import play.api._

现在,LoggerController类型都会发生冲突,因为它们都存在于两个包中。导入特定的类将使您免于此问题。