Kotlinのコレクションライブラリに関する解説として、よく、 Kotlinのコレクションは不変と可変に分かれていて〜 といった形のものを見かけます。そして、その例として、 val list: List<Int> = listOf(1, 2, 3) list.add(4) // コンパイルエラー のようなコードが挙げられていたりします(このような解説を結構見かけるということで、特定の誰かを想定しているわけではありません)。しかし、これは誤りです。以下のコードを実行することで、Kotlinのコレクションの、一見「不変」っぽい型は単に「読み取り専用」の型でしかないことがわかります。 val list1: MutableList<Int> = mutableListOf(1, 2, 3) val list2: List<Int> = list1 list1[0] = 4 println(list