2019年4月24日水曜日

開発環境

Head First Kotlin: A Brain-Friendly Guide (Dawn Griffiths(著)、David Griffiths(著)、O'Reilly Media)のChapter 10(generics - Know Your Ins from Your Outs)、Pool Puzzle(303)の解答を求めてみる。

コード

abstract class Pet(val name: String)
class Cat(name: String) : Pet(name)
class Fish(name: String) : Pet(name)

class PetOwner<T : Pet>(t: T) {
    val pets = mutableListOf(t)

    fun add(t: T) {
        pets.add(t)
    }

    fun remove(t: T) {
        pets.remove(t)
    }
}

fun main() {
    val catFuzz = Cat("Fuzz Lightyear")
    val catKatsu = Cat("Katsu")
    val fishfinny = Fish("Finny McGraw")
    val catOwner = PetOwner(catFuzz)
    catOwner.add(catKatsu)

    for (cat in catOwner.pets) {
        println(cat.name)
    }
    println()
    // おまけ
    val petOwner = PetOwner<Pet>(catFuzz)
    petOwner.add(fishfinny)

    for (pet in petOwner.pets) {
        println(pet.name)
    }
}

入出力結果

Fuzz Lightyear
Katsu

Fuzz Lightyear
Finny McGraw

Process finished with exit code 0

0 コメント:

コメントを投稿