Я только что начал Scala и хочу очистить некоторые основы. В функции ниже Нижняя граница установлена на Puppy. Почему Puppy1 и Puppy2 разрешены в приведенном ниже коде.scala нижняя граница должна допускать те же объекты иерархии?
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' заполнены' Object' здесь. – talex
Компилятор подбрасывает тип, который соответствует границам, если это возможно. –