Эквивалентный код Scala, как вы говорите
val g: UndirectedGraph[String, DefaultEdge] = new SimpleGraph[String, DefaultEdge](classOf[DefaultEdge])
Но это может немного высохнуть, потому что Scala может вывести параметры типа вашего конструктора
val g: UndirectedGraph[String, DefaultEdge] = new SimpleGraph(classOf[DefaultEdge])
Но это не СУХОЙ, как это может быть. Тип «DefaultEdge» упоминается дважды. Вы можете получить еще больше СУХОГО с манифестами. Сначала вы создаете фабрику для создания SimpleGraphs.
object SimpleGraph {
import scala.reflect.Manifest
def apply[T, E]()(implicit mfst : Manifest[E]) = new SimpleGraph[T,E](mfst.erasure.asInstanceOf[Class[_ <: E]])
}
И с этим мы можем создать график с
val g = SimpleGraph[String, DefaultEdge]()
или
val g: UndirectedGraph[String, DefaultEdge] = SimpleGraph()
Очевидно, что эта техника того стоит, только если вы создаете группу SimpleGraphs
Теперь несколько предостережений и предупреждений. Манифесты до сих пор считаются экспериментальными. Я подозреваю, что они слишком полезны, чтобы их вообще можно было отбросить, но нет никаких гарантий. Подробнее о манифестах см. http://scala -blogs.org / 2008/10 / manifest-reified-types.html