一般社団法人 全国個人事業主支援協会

COLUMN コラム

「ジェネリクス: 共変 (covariant) と不変 (invariant) について理解する」を読んでの感想です

URLはこちら:https://maku77.github.io/kotlin/generics/variant.html

全体の感想としては、共変、不変という言葉が悪いのか頭に入ってことないですね・・

・共変(covariant)

型パラメータが共変である場合、サブタイプ関係が保たれます。 例えば、Listは共変であり、List<Int>List<Any>として扱えます。 これは、Listが要素の取得のみを行い、要素の追加を許可しないため、型の安全性が保たれるからです。

・不変(invariant)

型パラメータが不変である場合、サブタイプ関係は保たれません。 MutableListは不変であり、MutableList<Int>はMutableList<Any>として扱えません。 これは、MutableListが要素の追加を許可するため、異なる型の要素が追加されると型の安全性が損なわれる可能性があるからです。

ジェネリックを使ってクラスを作成する場合には覚える必要があるのでしょうが、何度か使わないと頭に入ってことなそうです。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア