init (Kotlin)

読み:いにっと
外語:init 英語
品詞:名詞

Kotlinにおける初期化ブロックを定義する予約語

目次

initはKotlinのソフトキーワードとして定義されている。これは適用可能な範囲が決まっている予約語である。

classの直下に記述した場合、そのclassのプライマリーコンストラクターに対応する初期化ブロックを定義するために使われるが、それ以外の箇所では変数に使うことも可能。

用途

initは初期化ブロックを実装するためのキーワードである。これはclassインスタンス化された際に必ず実行されるもので、一種のコンストラクターであり、classの初期化に使われる。

引数は存在せず、init { ... } の書式を取る。一つのclassに複数のinitを書くことはできるが、普通は一つだけ定義し、必要であればセカンダリーコンストラクターとしてconstructorを使用する。

制限

初期化ブロックinitが実行されるタイミングは、それよりプログラムとして前に書かれた変数、プロパティしか初期化されていない。

initより後に記述されている変数、プロパティは、(lateinitが宣言されているものは除き)参照は可能だが内容は未定義である。

class Test {
    init { printHoge() }
    val testvar = true
    init { printHoge() }

    fun printHoge() {
        System.out.println(testvar)
    }
}

この実行結果は、次のようになる。

I/System.out: false

I/System.out: true

この結果は、多くの場合期待したものではないだろう。initは、プロパティ宣言の下に記述するのが無難である。

initは当然ながらActivity#onCreate()などより前に実行されるので、getPackageName()などの仮想メソッドは実行できない。

用語の所属
予約語 (Kotlin)
関連する用語
コンストラクター
constructor (Kotlin)

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club