【发布时间】:2017-08-22 16:11:33
【问题描述】:
我对 Shapeless 还很陌生,从我的问题中可以推断出来。给定LabelledGeneric 的实例,我如何获取它所代表的类的名称。我可以从Keys 获取字段名称信息,所以我假设我需要一些其他类型的Witness 来封装类型本身,但我不知道是哪个。
例如,如果我在 com.bar 包中有一个名为 Foo 的案例类,我想获取字符串“com.bar.Foo”(或者单独获取也可以)。
implicit def example[T, Repr <: HList](implicit label: LabelledGeneric.Aux[T, Repr],
kk: Keys[Repr]): Bibble[T] = new Bibble[T] {
override def typeName(value: T): String = ???
}
【问题讨论】:
-
也许你可以使用 scala reflect `scala.reflect.runtime.universe.typeOf[Foo].typeSymbol.fullName`
-
我可以使用 manifests 或 typetags,但我想我宁愿在 shapeless 中这样做,因为我同时将 shapeless 用于其他事情。
-
classOf[String].getSimpleName,它不是无形的