Kotlin Reference: Packages

  可以在源文件的开头进行包声明:

[code lang=”kotlin”]package foo.bar
fun baz() {}
class Goo {}
// …[/code]

  源文件中的全部内容(如类和函数)都包含在所声明的包中。在上面的例子中,函数 baz() 的全名为 foo.bar.baz,类 Goo 的全名为 foo.bar.Goo

  如果没有指定所属的包,则该文件的内容属于没有名称的“默认”包。

Default Imports

  下面所列的包会默认导入到每个 Kotlin 文件中:

  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.* (since 1.1)
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

  对于具体的目标平台,还会导入额外的包:

  • JVM:
    • java.lang.*
    • kotlin.jvm.*
  • JS:
    • kotlin.js.*

Imports

  除了默认导入的包,每个文件也可以包含自己的导入指令。Grammar 中描述了导入所使用的语法。

  可以导入单个名称:

[code lang=”kotlin”]import foo.Bar // Bar is now accessible without qualification[/code]

也可以导入整个作用域(包、类、object 等)内所有可以访问的内容:

[code lang=”kotlin”]import foo.* // everything in ‘foo’ becomes accessible[/code]

  如果存在命名冲突,可以使用 as 关键字在本地为冲突的对象进行重命名,以消除歧义:

[code lang=”kotlin”]import foo.Bar // Bar is accessible
import bar.Bar as bBar // bBar stands for ‘bar.Bar'[/code]

  import 关键字并不仅限于导入类,还可以用它来导入其他声明,如:

  Kotlin 中的所有声明的导入都通过常规的 import 关键字进行,没有单独的静态导入(import static)语法,这一点与 Java 不同。

Visibility of Top-level Declarations

  如果把一个顶层声明标记为 private,则该声明为文件私有(见可见性修饰)。