パッケージとインポート
パッケージ宣言をするときは、ソースファイルの先頭に書いてください。
package org.example
fun printMessage() { /*...*/ }
class Message { /*...*/ }
// ...
そうすると、ソースファイルの全ての内容(クラスや関数など)は、このパッケージに含まれる事になります。
従って上の例では、printMessage()
の完全名はorg.example.printMessage
となり、
Message
の完全名はorg.example.Message
となります。
もしパッケージが指定されない場合は、ファイルの内容は名前を持たないdefaultパッケージに属することになります。
デフォルトのインポート
幾つかのパッケージはkotlinのファイルにデフォルトでimportされます。
- kotlin.*
- kotlin.annotation.*
- kotlin.collections.*
- kotlin.comparisons.*
- kotlin.io.*
- kotlin.ranges.*
- kotlin.sequences.*
- kotlin.text.*
この他にもターゲットとなる環境ごとにインポートされるパッケージがあります。
- JVM:
- java.lang.*
- kotlin.jvm.*
- JS:
インポート
デフォルトのインポートとは別に、 それぞれのファイルは独自のインポートディレクティブを含む事が出来ます。
単一の名前を指定してインポートできます:
import org.example.Message // Messageはパッケージ名修飾無しでアクセス可能になります
または、あるスコープ(パッケージ、クラス、オブジェクト等)内の全てのアクセス可能なコンテンツをインポートする事も出来ます:
import org.example.* // 'org.example'内の全てがアクセス可能になります
名前の衝突がある場合、asキーワードを使用して衝突するエンティティを局所的にリネームすることでどちらを指すのかを明確にできます:
import org.example.Message // Messageはアクセス可能
import org.test.Message as TestMessage // TestMessageは'org.test.Message'を意味する
import キーワードはクラスだけをインポートするために限定されるわけではありません。 クラス以外の宣言をインポートするために使用することもできます:
トップレベル宣言の可視性
もしトップレベルの宣言にprivateマークがついていれば、それが宣言されたファイル内のプライベートです。 (可視性修飾子 を参照してください。)