0

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

4

0 に答える 0