Kotlinいいですよね。色々おいしいところはあると思いますが、NullPointerExceptionが起きにくいのが個人的には一番好きです。
ただ、Javaでメモリーリークが完全になくなったわけではないのと同様に、おかしな書き方をすればヌルポを起こすことができます。反省と備忘録を兼ねてメモしておきます。
実際のコード
class First {
private val second : Second = Second(this)
fun hello() = second.hello()
}
class Second(private val first: First) {
init {
first.hello()
}
fun hello() = print("hello")
}
fun main() {
First()
}
こんな風にFirstクラスへの参照をSecondクラスに渡し、Secondのinitが終わる前にFirstからSecondを参照すると、当然初期化が終わっていないのでNullPointerExceptionにこんにちはできます。
あとJavaのライブラリを呼ぶ時も気を付けないといけないですよね。こちらが原因のNullPointerExceptionも前やったことがあります。https://kotlinlang.org/docs/reference/java-interop.html