2016/12/26の30分 Kotlinメモ🍙
書いてるコードは雑にここにあります。
Kotlinスタートブック -新しいAndroidプログラミング を引き続き読んでる。
Kotlinスタートブック -新しいAndroidプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2016/07/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Type projections
説明すると難しいし、俺もまだあまり理解できてないというか、これでいいのかな?レベルなのでなんともー
とりあえずout
とin
があり、不変、共変、反変ということを理解すればいいかも。
T
って普通に書くと不変であり、サブタイプの関係は成り立たないらしい。
面倒そうだけど、安全な気がするねー。
class Container5<T>(var value: T) { fun copyTo(to: Container5<in T>) { to.value = value } } class Container6<out T>(val value: T) { } fun show(container5: Container5<out Any>) { println(container5.toString()) println(container5.hashCode()) println(container5.value) } fun show6(container6: Container6<Any>) { println(container6.toString()) println(container6.hashCode()) println(container6.value) } val c5: Container5<Number> = Container5(10) Container5(10).copyTo(c5) show(c5) val c6: Container6<Number> = Container6(10) show6(c6)
Star-projections
*
ね。
Star-projectionsとかなんかジョジョっぽくね?かっくいいー!!
val c52: Container5<*> = Container5(10) c52.value.toString() // Any?型になる
Reified type parameters
あーこれねー
Javaで困るやーつーだな
Kotlinだと楽なんだなーいいなー
// inline + reified inline fun <reified T> Any.instanceOf(): Boolean = this is T println("".instanceOf<String>()) // true println("".instanceOf<Int>()) // false
まとめ
ねぇ?Kotlin。そろそろ僕に心を開いてくれてもいいんじゃないかな?ね?