如何在 scala 运行时中获取类型别名的别名类型


import scala.reflect.runtime.universe._
object Main {
  final type INeedDetails = (Int, String, Unit, Nothing, Float)
  def main(args: Array[String]): Unit = println {
    typeTag[INeedDetails]
  }
}

上面的代码段将TypeTag[Main.INeedDetails] .有没有办法从这个TypeTag中提取完整的(Int, String, Unit, Nothing, Float)元组信息?

您可以从标签中dealias类型:

scala> type INeedDetails = (Int, String, Unit, Nothing, Float)
defined type alias INeedDetails
scala> typeTag[INeedDetails].tpe
res1: reflect.runtime.universe.Type = INeedDetails
scala> typeTag[INeedDetails].tpe.dealias
res2: reflect.runtime.universe.Type = (scala.Int, String, scala.Unit, scala.Nothing, scala.Float)

最新更新