私はScalaを始めたばかりで、いくつかの基本をクリアしたいと思います。以下の関数の下限はPuppyに設定されています。どのようにPuppy1とPuppy2が下のコードで許可されるのですか?スカラー下限は同じ階層オブジェクトを許可する必要がありますか?
class Animal
class Dog extends Animal
class Puppy extends Animal
class Puppy1 extends Animal
class Puppy2 extends Puppy
class AnimalCarer{
def display [T >: Puppy](t: T){
println(t)
}
}
val animal = new Animal
val dog = new Dog
val puppy = new Puppy
val puppy1 = new Puppy1
val puppy2 = new Puppy2
val animalCarer = new AnimalCarer
animalCarer.display(animal)
animalCarer.display(puppy)
animalCarer.display(puppy1)
animalCarer.display(puppy2)
animalCarer.display(dog)
私の事 'T'。 – talex
可能であれば、コンパイラは境界に適合する型にアップキャストします。 –