本文收錄于 kotlin入門潛修專題系列趟径,歡迎學(xué)習(xí)交流瘪吏。
創(chuàng)作不易,如有轉(zhuǎn)載蜗巧,還請(qǐng)備注掌眠。
Packages
kotlin源代碼文件的第一行代碼一般都會(huì)以包定義開(kāi)始,定義如下:
package com.test//包名
fun test(){
}
class Test {
}
kotlin和java一樣幕屹,使用package關(guān)鍵字來(lái)定義一個(gè)包名蓝丙,package的定義基本不用我們手動(dòng)來(lái)寫(xiě),因?yàn)樵谝粋€(gè)包下新建文件望拖,IDE會(huì)自動(dòng)添加package包名渺尘。
上面的代碼,test()方法的全名即是com.test.test()说敏,而Test類的全名即是com.test.Test鸥跟。
如果沒(méi)有新建指定的包,那么kotlin中的源文件將會(huì)位于一個(gè)默認(rèn)的名為default的包下盔沫。
Imports
kotlin同java一樣医咨,當(dāng)用到某個(gè)類或者方法時(shí),首先需要導(dǎo)入該類或者方法所在的包路徑架诞,比如拟淮,我們要使用剛剛定義的com.test包下的Test類,示例如下:
import com.test.Test//導(dǎo)入com.test.包下的Test類
class Main {
companion object {
@JvmStatic fun main(args: Array<String>) {
val test : Test = Test()//這里使用了com.test下的Test類谴忧,所以需要在文件頭部導(dǎo)入該類
}
}
}
Default Imports
為了方便使用很泊,kotlin中為每個(gè)源代碼文件都默認(rèn)導(dǎo)入了以下幾個(gè)包:
— kotlin.*
— kotlin.annotation.*
— kotlin.collections.*
— kotlin.comparisons.*
— kotlin.io.*
— kotlin.ranges.*
— kotlin.sequences.*
— kotlin.text.*
另外還會(huì)根據(jù)不同的平臺(tái)導(dǎo)入一些其他額外的包
如jvm平臺(tái)下,還會(huì)默認(rèn)導(dǎo)入以下包
— kotlin.jvm.*
— java.lang.*
在js平臺(tái)下沾谓,還會(huì)默認(rèn)導(dǎo)入以下包
— kotlin.js.*
正是因?yàn)槿绱宋欤覀冊(cè)谟玫缴厦姘碌念惢蛘叻椒ǖ臅r(shí)候才沒(méi)有看到在文件頂部import對(duì)應(yīng)的包路徑媳搪,如下面示例代碼:
//注意峦萎,這里并沒(méi)有import任何包
class Main {
companion object {
@JvmStatic fun main(args: Array<String>) {
val c : Int = 1//在沒(méi)有導(dǎo)入任何包的情況下踏堡,為什么可直接使用Int咆槽?
}
}
}
上面代碼中斟湃,并沒(méi)有導(dǎo)入任何包咆繁,但是卻能使用Int杆兵,這是因?yàn)镮nt正是位于kotlin包下躺涝,已經(jīng)默認(rèn)在所有文件中都導(dǎo)入了伟骨,所以才不需要饮潦。實(shí)際上kotlin中內(nèi)置的幾種類型都在kotlin這個(gè)包下。
下面給出import的幾種用法
import com.test.Test//指定到具體類名携狭,這樣在當(dāng)前文件中只能使用com.test包下的Test這個(gè)類继蜡,而其他類無(wú)法使用。
import java.util.*//指定到了包一級(jí),這樣java.util中的所有類都可以使用稀并。
import com.test.Word as myWord//可以使用as關(guān)鍵字來(lái)重新定義類名
class Main {
companion object {
@JvmStatic fun main(args: Array<String>) {
val test: Test = Test()
val word: myWord = myWord()//注意這里仅颇,我們使用as重新定義了Word類,所以這里要用myWord
val list : ArrayList<String>
}
}
}
對(duì)于包的導(dǎo)入還需要注意碘举,如import java.util.*忘瓦,意思是指java.util包下的所有類可用,但是如果java.util包下還有其他子包引颈,則無(wú)法使用耕皮,依然需要導(dǎo)入到具體子包才能使用子包下的類。
最后蝙场,kotlin中并沒(méi)有java中import static的語(yǔ)法凌停,只能采用上述方法進(jìn)行包導(dǎo)入。