Во-первых, вам необходимо указать TypeTag
для V
также:
def newBuilder[V, E <: Edge[V]](implicit tag: TypeTag[E], tag1: TypeTag[V]) = {
tag.tpe match {
case x if x <:< typeOf[DirectedEdge[V]] => new DirectedGraphBuilder[V, DirectedEdge[V]]()
case _ => new UndirectedGraphBuilder[V, UndirectedEdge[V]]()
}
}
Затем исправьте также тип создаваемого Edge
.В какой-то момент типы должны быть исправлены тем или иным способом при создании.
Тогда это работает, хотя сценарий использования неясен.