【发布时间】:2015-04-21 07:24:06
【问题描述】:
有一个抽象类Animal。
Animal 由 Dog 和 Cow 扩展。
Animal 有一个抽象函数 copy。在Dog 上调用时应返回Dog,在Cow 上调用时应返回Cow。
abstract class Animal[T] {
def copy[CT <: Animal[T]] (): CT
}
class Dog[T] extends Animal[T] {
def copy = new Dog[T]()
}
这给出了一个错误。我做错了什么?
【问题讨论】:
-
“这给出了一个错误。”。不要让我们猜测。给出错误。而这种情况下的错误应该会给你一个线索(因为它说来自 Animal 的副本不是由 Dog 实现的)
标签: scala generics inheritance