1

私がこのようなコードを持っているとしましょう:

abstract class Animal[T <: Animal[T]] {
  def mateWith(that: T)
}

class Cow extends Animal[Cow] {
  override def mateWith(that: Cow) { println("cow") }
}

class Dog extends Animal[Dog] {
  override def mateWith(that: Dog) { println("dog") }
}

私はこのようなものを書きたいです:

class Caretaker (val pet: Animal) {
  ...
}

ただし、Animalをパラメーター化する必要があるため、これは無効です。Caretakerをパラメータ化することでこれを解決できます。

class Caretaker[T <: Animal[T]](val pet: Animal[T]) {
  ...
}

しかし、これは私がしていることには本当に不要です。

これを行うためのより良い方法はありますか?

4

2 に答える 2

3
class Caretaker(val pet: Animal[_]) {
    ...
}
于 2012-04-19T21:37:51.850 に答える
0

世話人に互いに交尾できる2匹のペットの世話をさせたい場合は、パラメータが重要になることに注意してください

class Caretaker[T <: Animal[T]](val pet1: T, val pet2: Animal[T]) {
  matePets = pet2.mateWith(pet1)
}
于 2012-04-19T22:42:14.947 に答える