Scala の Variance と Type Bounds の構文を理解するために、いくつかの小さなことを試してみました。
class Animal() {
def says():String = "???"
}
class Dog() extends Animal {
override def says():String = "woof"
}
val adog = new Dog
class Zoo[A <: Animal](thing: A) {
def whoami()=thing.getClass
def chat()=thing.says
}
ただし、オブジェクトのインスタンスを作成しようとすると、次のようになります。
scala> val cage = new Zoo[Dog](adog)
<console>:18: error: type mismatch;
found : this.Dog
required: this.Dog
val cage = new Zoo[Dog](adog)
コンパイラが何を言っているのかよくわかりませんか?
tks