ユーザ用ツール

サイト用ツール


kotlin:共変_反変

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
kotlin:共変_反変 [2019/11/26 00:50]
ips [共変(out)]
kotlin:共変_反変 [2019/11/26 01:28] (現在)
ips [Listの場合]
ライン 32: ライン 32:
  
 ===== 共変(out) ===== ===== 共変(out) =====
 +
 +<WRAP center round tip 90%>
 valとして変更しない、参照用(out)として値を設定する valとして変更しない、参照用(out)として値を設定する
 +上位のAny型に、下位のint型を設定しているが、Any型として参照しかしない(out)ので安全。
 +</​WRAP>​
 +
 +
 <code kotlin> <code kotlin>
     // --- 共変(out) ... 広い定義に狭い定義のものを参照用に入れることが出来る(val)  ---     // --- 共変(out) ... 広い定義に狭い定義のものを参照用に入れることが出来る(val)  ---
ライン 49: ライン 55:
 </​code>​ </​code>​
 ===== 反変(in) ===== ===== 反変(in) =====
 +
 +<WRAP center round tip 90%>
 +varの値を変更する。
 +下位のHuman型の配列に、上位のAnimal型の配列を設定しているが、Animal型としてしか参照しないので安全。
 +</​WRAP>​
 +
  
 <code kotlin> <code kotlin>
ライン 77: ライン 89:
  
 </​code>​ </​code>​
 +
 +
 +===== Listの場合 =====
 +listはそもそも不変ではない。
 +<​code>​
 +    val intList = listOf<​Int>​(1,​2,​3)
 +    val strList= listOf<​String>​("​a","​b","​c"​)
 +    val anyList:​List<​Any>​ = intList + strList
 +
 +    anyList.forEach {
 +        println(it)
 +    }
 +    ​
 +    ↓
 +1
 +2
 +3
 +a
 +b
 +c
 +
 +    val anyList2 = listOf<​Any>​("​a","​b","​c"​)
 +//    val intList2:​List<​Int>​ = anyList2 コンパイルエラー
 +</​code>​
 +
kotlin/共変_反変.1574697027.txt.gz · 最終更新: 2019/11/26 00:50 by ips