開発環境
- macOS Mojave - Apple (OS)
- Windows 10 Pro (OS)
- IntelliJ IDEA CE(Community Edition) (IDE(統合開発環境))
- Kotlin (プログラミング言語)
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 コメント:
コメントを投稿