一个源文件需要以包声明为开头:
package foo.bar
fun baz() {}
class Goo {}
// ...
源文件的所有内容(如类和函数)都包含在声明的包中。 所以,在上面的例子中,baz()的全称是foo.bar.baz,而Goo的全称是foo.bar.Goo。
如果没有指定包,则这样的文件的内容属于没有名称的“default”包。
默认导入(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)
除了默认导入,每个文件可能包含属于该文件本身的导入指令。
我们可以导入单个名称,如:
import foo.Bar // Bar is now accessible without qualification
或范围的所有可访问内容(包,类,对象等):
import foo.* // everything in 'foo' becomes accessible
如果有重名冲突,我们可以通过使用as关键字来本地重命名来消除歧义:
import foo.Bar // Bar is accessible
import bar.Bar as bBar // bBar stands for 'bar.Bar'
import关键字不限于导入类; 您也可以使用它来导入其他声明:
- 顶级函数和属性
- 在对象声明中声明的函数和属性
- 枚举常数
与Java不同,Kotlin没有单独的“import static”语法; 所有这些声明都使用常规import关键字导入。
顶级声明的可见性(Visibility of Top-level Declarations)
如果顶级声明被标记为“私有”,则对其声明的文件是私有的(请参阅“可见性修饰符”)。