如何访问特征的默认类实现

时间:2017-10-15 16:11:35

标签: scala

在Scala中,可以通过在某些类(或特征)的伴随对象上调用List(1, 2, 3) res0: List[Int] = List(1, 2, 3) Set(1, 2, 3) res1: scala.collection.immutable.Set[Int] = Set(1, 2, 3) Map(1 -> "a", 2 -> "b") res2: scala.collection.immutable.Map[Int,String] = Map(1 -> a, 2 -> b) 方法来创建对象。例如:

res0

在那里,res1是类tedious的一个实例。

然而,res2Set呢?没有具体的Map或{{1}}类,只有特征,并且无法实例化特征。他们的班级是什么?

1 个答案:

答案 0 :(得分:4)

在这些情况下,SetMap分别只是res1res2的声明类型。要获取实际类型,请尝试以下方法:

Set(1, 2, 3).getClass.getCanonicalName
Map(1 -> "a", 2 -> "b").getClass.getCanonicalName

现在您将看到它们不仅仅是特征scala.collection.immutable.Setscala.collection.immutable.Map的实例;它们是实现这些特征的具体类的实例。

如果您想了解有关如何创建这些类的详细信息,可以查看SetMap的源代码。