假设我有一个带有 TypeTag 的类:
case class TypeViz[T : TypeTag]() {
def getOnlyInstance = ...
}
T
如果T
是单例类型,是否可以在运行时使用 TypeTag 来查找 的值?即:
object TypeViewsSpec {
val a = 3
val b = new Object {
val c = 3
}
}
it("object") {
val v = TypeViz[TypeViewsSpec.type]
assert(v.getOnlyInstance == TypeViewsSpec)
}
it("constant") {
val v = TypeViz[3].typeView
assert(v.getOnlyInstance == 3)
}
it("unique value") {
val v = TypeViz[TypeViewsSpec.a.type].typeView
assert(v.getOnlyInstance == 3)
}
it(" ... more complex") {
val v = TypeViz[TypeViewsSpec.b.c.type].typeView
assert(v.getOnlyInstance == 3)
}
我不确定此功能是否在 scala 反射中本地提供。因此,请尽可能建议任何库/黑客,而不更改课程的签名TypeViz
非常感谢您的意见。