jeudi 10 mars 2016

Map of bounded types in Scala

I'm trying to build something like a class registry in Scala where I can grab a class object from a key. The point is that I want to ensure my classes to inherit from a common trait.

Something like that :

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]
  )
}

But it looks like I missed something because it doesn't compile... Any ideas ?





Aucun commentaire:

Enregistrer un commentaire