パッケージとインポート
ソースファイルはパッケージ宣言で始まることがあります。
kotlin
package org.example
fun printMessage() { /*...*/ }
class Message { /*...*/ }
// ...
ソースファイルのクラスや関数などのすべての内容は、このパッケージに含まれます。 そのため、上記の例では、printMessage()
の完全修飾名は org.example.printMessage
であり、 Message
の完全修飾名は org.example.Message
です。
パッケージが指定されていない場合、そのファイルの内容は、名前のない_デフォルト_パッケージに属します。
デフォルトのインポート
多数のパッケージが、すべてのKotlinファイルにデフォルトでインポートされます。
- kotlin.*
- kotlin.annotation.*
- kotlin.collections.*
- kotlin.comparisons.*
- kotlin.io.*
- kotlin.ranges.*
- kotlin.sequences.*
- kotlin.text.*
ターゲットプラットフォームに応じて、追加のパッケージがインポートされます。
JVM:
- java.lang.*
- kotlin.jvm.*
JS:
インポート
デフォルトのインポートとは別に、各ファイルは独自の import
ディレクティブを含むことができます。
単一の名前をインポートすることもできます。
kotlin
import org.example.Message // Message is now accessible without qualification
または、スコープ(パッケージ、クラス、オブジェクトなど)のアクセス可能なすべての内容をインポートすることもできます。
kotlin
import org.example.* // everything in 'org.example' becomes accessible
名前の衝突がある場合は、as
キーワードを使用して衝突するエンティティをローカルで名前変更することで、曖昧さを解消できます。
kotlin
import org.example.Message // Message is accessible
import org.test.Message as TestMessage // TestMessage stands for 'org.test.Message'
import
キーワードはクラスのインポートに限定されません。他の宣言をインポートするためにも使用できます。
トップレベル宣言の可視性
トップレベル宣言が private
とマークされている場合、その宣言は宣言されたファイルに対してプライベートになります(可視性修飾子を参照)。