获取值类型标签的父枚举
Posted
技术标签:
【中文标题】获取值类型标签的父枚举【英文标题】:Get parent Enumeration of Value typetag 【发布时间】:2021-02-22 20:39:28 【问题描述】:我有一个 Type
实例,它引用特定 Enumeration
的 Value
。
有没有办法获得父枚举的Type
或Symbol
?换句话说,如果我有typeOf[SomeEnumeration.Value]
,我如何获得typeOf[SomeEnumeration]
?
我知道此信息存在于运行时,因为我可以在调试控制台中使用valueType.pre.sym
看到它,但我无法提供用于在代码中访问它的公共 API。
我的第一个想法是valueType.typeSymbol.owner
,但这只是为基类Enumeration
提供Symbol
,而不是我想要的特定枚举实例。
【问题讨论】:
您能否添加一些简化的代码示例来说明您的问题并使其更容易重现和测试。 @michaJlS 在代码方面没有什么可添加的。我有typeOf[SomeEnumeration.Value]
(其中SomeEnumeration
不是直接知道的),我需要typeOf[SomeEnumeration]
。
【参考方案1】:
假设你有一个枚举
object WeekDay extends Enumeration
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
然后尝试匹配TypeRef
import scala.reflect.runtime.universe._
typeOf[WeekDay.Value] match
case TypeRef(pre, _, _) => pre // WeekDay.type
【讨论】:
以上是关于获取值类型标签的父枚举的主要内容,如果未能解决你的问题,请参考以下文章