2016/12/25の30分 Kotlinメモ🍰
2016/12/25の30分 Kotlinメモ🍰
書いてるコードは雑にここにあります。
Kotlinスタートブック -新しいAndroidプログラミング を引き続き読んでる。
Kotlinスタートブック -新しいAndroidプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2016/07/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Class Delegation
前も書いたけど、これはよい。
そしてinterfaceのメソッドの引数にもデフォルト引数使えるんだーという発見。
interface GreeterKai { // sayHello()で呼び出すとデフォルト引数の方じゃなくて、引数なしで定義したメソッドが呼ばれるF fun sayHello() // デフォルト引数は指定できるのね fun sayHello(target: String = "匿名") } class JapaneseGreeterKai : GreeterKai { override fun sayHello() { sayHello("匿名") } override fun sayHello(target: String) { println("こんにちは、$target!") } } class GreeterWithRecording(private val greeterKai: GreeterKai) : GreeterKai by greeterKai { private val _target: MutableSet<String> = mutableSetOf() val targets: Set<String> get() = _target override fun sayHello(target: String) { _target += target greeterKai.sayHello(target) } } val gr = GreeterWithRecording(JapaneseGreeterKai()) gr.sayHello("test") // こんにちは、test! gr.sayHello() // こんにちは、匿名! gr.sayHello("kotlin") // こんにちは、kotlin! println(gr.targets) // [test, kotlin]
Generics
今のところ出てきたものはJavaとそこまで変わらず。
where
がちょっと変わってるかなー?みたいなところかねー
class Container<T>(val value: T) { } // Javaで書く T extends Collection<String> class Container2<T : Collection<String>>(val value: T) { } class Container3<T>(val value: T) where T : Collection<String>, T : List<String> { } interface A { } interface B { } class Container4<T>(val value: T) where T : A, T : B { }
まとめ
メリークリスマス🍰