この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
kotlin:共変_反変 [2019/11/26 00:56] ips [共変(out)] |
kotlin:共変_反変 [2019/11/26 01:28] (現在) ips [Listの場合] |
||
|---|---|---|---|
| ライン 33: | ライン 33: | ||
| ===== 共変(out) ===== | ===== 共変(out) ===== | ||
| - | <WRAP center round tip 60%> | + | <WRAP center round tip 90%> |
| valとして変更しない、参照用(out)として値を設定する | valとして変更しない、参照用(out)として値を設定する | ||
| 上位のAny型に、下位のint型を設定しているが、Any型として参照しかしない(out)ので安全。 | 上位のAny型に、下位のint型を設定しているが、Any型として参照しかしない(out)ので安全。 | ||
| ライン 56: | ライン 56: | ||
| ===== 反変(in) ===== | ===== 反変(in) ===== | ||
| + | <WRAP center round tip 90%> | ||
| varの値を変更する。 | varの値を変更する。 | ||
| 下位のHuman型の配列に、上位のAnimal型の配列を設定しているが、Animal型としてしか参照しないので安全。 | 下位のHuman型の配列に、上位のAnimal型の配列を設定しているが、Animal型としてしか参照しないので安全。 | ||
| + | </WRAP> | ||
| + | |||
| <code kotlin> | <code kotlin> | ||
| ライン 86: | ライン 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> | ||
| + | |||