我正在寻求解决以下问题的帮助:
case class A(val name: String)
class B(name: String) extends A(name)
class Base[T <: A](param: T)
class SubClass[T <: B](param: T)
object Factory {
def create[T <: A](param: T) = {
param.name match {
case "something" => new Base(param)
case "something else" => new SubClass(param)
}
}
}
由于子类期望的参数 (T :< B) 与 create which isT :< A 中的 T 定义不匹配,工厂无法编译。是否有一个干净的解决方案,或者我需要在调用子类构造函数?沮丧会是什么样子?
需要明确一点 - 当 Subclass 是用 param 构造的,param 确实是 T<: B。
谢谢。