Twitterで流れてきたので。
@omochimetaruさんに怒られたらブログ取り下げます。
後輩がkotlinのバグ?を発見したhttps://t.co/WfuELbwNpf
— ��ソフバン光✨はやめとけ���� (@omochimetaru) October 5, 2016
.@kmizu Kotlin Slackに投げてみたら、JetBrainsの人が 仕様だよってお返事をくれましたw
— ��ソフバン光✨はやめとけ���� (@omochimetaru) October 5, 2016
実際のコード
何が起こっているか
バグっぽいと言われているコードをdecompileするとこんな感じになります。
つまり、init節が優先されてクラスフィールドの初期化があとになっちゃってるんですね。
解決法
宣言順が想定通りになるようこんな感じにすると良いです。
うーん、なんとも微妙なKotlinの仕様って感じがしますね。
nullを返さないはずのgetStr関数の振る舞いやvalでnot nullのクラスフィールドからnullを参照できてしまうというのは。
0 件のコメント:
コメントを投稿