【发布时间】:2016-11-02 17:02:15
【问题描述】:
我刚开始使用 Scala,想了解一些基础知识。在下面的函数中,Lower bound 设置为 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里面填满了Object。 -
如果可以的话,编译器向上转换为适合边界的类型。
标签: scala lower-bound