在泛型类中创建类型别名

时间:2016-01-18 17:26:30

标签: scala

我需要一些方法来使用类型参数

在类中定义类型别名
class ToMap[Key, Value] {
  type MapType = Map[Key, Value]
}

val z: ToMap[Int, Int].MapType = Map((1, 1))

此示例不起作用,因为type MapType是类型成员,而不是类型别名,因此它不会编译。

是否有其他方法可以使用泛型类获取类型别名?

一般来说,我需要一些方法来使用一种泛型类来获得不同的类型,即进行一些类型转换。然后我想重用转换后的类型作为其他类的类型参数。

1 个答案:

答案 0 :(得分:4)

我的猜测是你想要使用路径依赖类型:

  class ToMap[Key, Value] {
    type MapType = Map[Key, Value]
  }

  val a = new ToMap[Int, Int]
  val z: a.MapType = Map((1, 1))

  val z2: ToMap[Int, Int]#MapType = Map((1, 1))