ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
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()などの仮想メソッドは実行できない。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます