Если у меня есть такой класс
class CanFlyType[T <: {type thing <: Bird}](t : T) {
def flySpeed() = {
println(t)
}
}
Что вы можете передать конструктору для создания этого класса? Я пытался передать это
class Species
class Animal extends Species
class Tiger extends Animal
abstract class Bird (name : String) extends Species {
val birdName = name
val flySpeed : Int
}
class Sparrow(name : String) extends Bird(name) {
val flySpeed = 30
}
val sparrow : Bird1 = new Sparrow("Robbin")
val canFly = new CanFlyType(sparrow)
Но я получаю ошибку. Я знаю, что мы можем достичь этого другими способами, но я просто хочу знать, можете ли вы использовать тип структурным типом и разницу между вышеприведенным и
class CanFly1[T <: Bird1](bird : T) {
def flySpeed() = {
println(bird.flySpeed)
}
}