kotlin入门潜修之基础篇—packages(包)

本文收录于 kotlin入门潜修专题系列,欢迎学习交流。

创作不易,如有转载,还请备注。

Packages

kotlin源代码文件的第一行代码一般都会以包定义开始,定义如下:

package com.test//包名
fun test(){   
}
class Test {
}

kotlin和java一样,使用package关键字来定义一个包名,package的定义基本不用我们手动来写,因为在一个包下新建文件,IDE会自动添加package包名。

上面的代码,test()方法的全名即是com.test.test(),而Test类的全名即是com.test.Test。

如果没有新建指定的包,那么kotlin中的源文件将会位于一个默认的名为default的包下。

Imports

kotlin同java一样,当用到某个类或者方法时,首先需要导入该类或者方法所在的包路径,比如,我们要使用刚刚定义的com.test包下的Test类,示例如下:

import com.test.Test//导入com.test.包下的Test类
class Main {
    companion object {
        @JvmStatic fun main(args: Array) {
            val test : Test = Test()//这里使用了com.test下的Test类,所以需要在文件头部导入该类
        }
    }
}

Default Imports

为了方便使用,kotlin中为每个源代码文件都默认导入了以下几个包:
— kotlin.*
— kotlin.annotation.*
— kotlin.collections.*
— kotlin.comparisons.*
— kotlin.io.*
— kotlin.ranges.*
— kotlin.sequences.*
— kotlin.text.*
另外还会根据不同的平台导入一些其他额外的包
如jvm平台下,还会默认导入以下包
— kotlin.jvm.*
— java.lang.*
在js平台下,还会默认导入以下包
— kotlin.js.*
正是因为如此,我们在用到上面包下的类或者方法的时候才没有看到在文件顶部import对应的包路径,如下面示例代码:

//注意,这里并没有import任何包
class Main {
    companion object {
        @JvmStatic fun main(args: Array) {
            val c : Int = 1//在没有导入任何包的情况下,为什么可直接使用Int?
        }
    }
}

上面代码中,并没有导入任何包,但是却能使用Int,这是因为Int正是位于kotlin包下,已经默认在所有文件中都导入了,所以才不需要。实际上kotlin中内置的几种类型都在kotlin这个包下。

下面给出import的几种用法

import com.test.Test//指定到具体类名,这样在当前文件中只能使用com.test包下的Test这个类,而其他类无法使用。
import java.util.*//指定到了包一级,这样java.util中的所有类都可以使用。
import com.test.Word as myWord//可以使用as关键字来重新定义类名
class Main {
    companion object {
        @JvmStatic fun main(args: Array) {
            val test: Test = Test()
            val word: myWord = myWord()//注意这里,我们使用as重新定义了Word类,所以这里要用myWord
            val list : ArrayList
        }
    }
}

对于包的导入还需要注意,如import java.util.*,意思是指java.util包下的所有类可用,但是如果java.util包下还有其他子包,则无法使用,依然需要导入到具体子包才能使用子包下的类。

最后,kotlin中并没有java中import static的语法,只能采用上述方法进行包导入。

你可能感兴趣的:(kotlin入门潜修之基础篇—packages(包))