Ich habe gerade angefangen Scala und möchte einige Grundlagen klären. In der unteren Funktion ist die untere Grenze auf Puppy gesetzt. Wie kommt es, dass Puppy1 und Puppy2 im folgenden Code erlaubt ist?scala untere Grenze sollte die gleiche Hierarchie Objekte zulassen?
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)
Ich Sache 'T' gefüllt mit' Object' hier. – talex
Der Compiler up-Cast auf einen Typ, der die Grenzen passt, wenn es möglich ist. –