I have the mappings
value:
val mappings: Map[Class[_] ,Iterable[AttributeKeyAndValue] => AnyRef]
is it possible to make it more typesafe like
val mappings: Map[Class[T], Iterable[AttributeKeyAndValue] => T]
where T
plays the same role as underscore. I'd expect compiler to complain, if it meets this code:
val mappings: Map[Class[T], Iterable[AttributeKeyAndValue] => T] = Map(
classOf[String], attrs => 1)
You can't parametrize
val
s so no, not like that.Looking at your request, it doesn't make much sense. Lets say that this:
val mappings: Map[Class[T], Iterable[AttributeKeyAndValue] => T]
was valid and the compiler would complain.You would either parametrize all the entries in the map with the same type, ie.
T
or have each entry with it's own parametrized type making it impossible to know which type it is when retrieving the entries with theapply
orget
methods.I suggest you stick with the
Class[_]
because the only way to parametrize this is to force all the entries to have the same type. For example if you were able to parametrize it inMap[Class[String], ...]
then you would only be able to put 1 entry in the map, the one where the key isclassOf[String]