配列は不変なのに、リストは共変なのはなぜですか? 質問する

配列は不変なのに、リストは共変なのはなぜですか? 質問する

例えばなぜ

val list:List[Any] = List[Int](1,2,3)

仕事はするが

val arr:Array[Any] = Array[Int](1,2,3)

失敗します (配列は不変であるため)。この設計上の決定の背後にある望ましい効果は何ですか?

ベストアンサー1

そうしないと、型の安全性が損なわれるからです。そうでない場合は、次のようにすることができます。

val arr:Array[Int] = Array[Int](1,2,3)
val arr2:Array[Any] = arr
arr2(0) = 2.54

コンパイラはそれを検出できません。

一方、リストは不変なので、変更できないものを追加することはできません。Int

おすすめ記事