Kotlinパッケージとインポート(Packages)

パッケージ

packageキーワードはパッケージを定義し、パッケージ指定はソースコードの先頭に置く。

package com.devkuma

fun foo() {}

class Item {}

// ...

ソースファイル(クラス、関数など)のすべての内容は、宣言されたパッケージに含まれる。したがって、上の例から分かるように、foo()の完全修飾名はcom.devkuma.fooであり、Itemの完全修飾名はcom.devkuma.Itemになる。

もしパッケージが指定されていなければ、ファイルの内容は名前のない「default」パッケージに属する。

デフォルトパッケージ

次の8つのパッケージはデフォルトでインポートされる。そのため、別途インポートしなくても使用できる。

*は「すべて」を意味する。

kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*

プラットフォームに応じて、追加のパッケージがインポートされる。

JVM:

java.lang.*
kotlin.jvm.*

JS:

kotlin.js.*

imports(インポート)

importはパッケージを取り込む。asは取り込んだエンティティに別名を付ける。

デフォルトImportを除き、一部のファイルは独自のimport命令を持つ。

1つの名前だけを指定してimportできる。

import foo.Bar // Barにアクセスできるようになる。

または、ある範囲(パッケージ、クラス、オブジェクトなど)のすべてにアクセスできるようにすることもできる。

import foo.* // 'foo'内のすべてにアクセスできるようになる。

名前の衝突がある場合は、asキーワードを使って衝突するエンティティを局所的に名前変更し、明確にできる。

import foo.Bar // Barはアクセス可能である。
import bar.Bar as bBar // bBarは'bar.Bar'を意味する。

importキーワードはクラスを取り込むためだけに限定されない。他の宣言を取り込むためにも使用できる。

  • トップレベル関数およびプロパティ
  • オブジェクト宣言で宣言された関数とプロパティ
  • enum定数

Javaとは異なり、Kotlinは別の「import static」構文を提供しない。すべての宣言はimportキーワードだけで取り込む。

トップレベル宣言の可視性

トップレベル宣言にprivateが付いている場合、それは宣言されたソースファイルに対して非公開である。

参照