0
我想在Scala中构建类似于类注册表的东西,我可以从一个键中获取一个类对象。 关键是我想确保我的类继承一个共同的特征。Scala中有界类型的地图
类似的东西:
trait GenericTrait{
def doSomethingCool()
}
trait AbstractRegistry {
def registry[T <: GenericTrait]:Map[String, Class[T]]
}
class Object1 extends GenericTrait{
override def doSomethingCool()= println("hello")
}
class Object2 extends GenericTrait{
override def doSomethingCool()=println("hi")
}
object MyClassRegistry extends AbstractRegistry {
override def registry[T <: GenericTrait]:Map[String, Class[T]]=Map(
"obj1" -> classOf[Object1],
"obj2" -> classOf[Object2]
)
}
但它看起来像我错过了一些东西,因为它不会编译... 任何想法?
工程就像一个魅力。谢谢 ! 编辑:'高清注册表:地图[字符串,类[_ <:GenericTrait]]似乎工作得很好,甚至更简单。 –
是的,我将AbstractRegistry类型参数留在您的示例中。这不是真的需要,你只能用它来限制注册表到GenericTrait后代的某个子族。补充说,回答:) –
“他们不是类[GenericTrait]”的子类Nitpick:子类型,而不是子类。 –