開発環境
- 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 コメント:
コメントを投稿