2016/10/05 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlinのインスタンス生成時のコンストラクタとクラスフィールド初期化の罠っぽいもの

Kotlinのインスタンス生成時のコンストラクタとクラスフィールド初期化の罠っぽいもの



Twitterで流れてきたので。

@omochimetaruさんに怒られたらブログ取り下げます。



バグっぽいと言われているコードをdecompileするとこんな感じになります。


つまり、init節が優先されてクラスフィールドの初期化があとになっちゃってるんですね。


宣言順が想定通りになるようこんな感じにすると良いです。


うーん、なんとも微妙なKotlinの仕様って感じがしますね。
nullを返さないはずのgetStr関数の振る舞いやvalでnot nullのクラスフィールドからnullを参照できてしまうというのは。


0 件のコメント:

コメントを投稿