运行时反射 - 使用单个方法提取符号

时间:2016-04-27 08:37:13

标签: scala generics reflection

我需要提取某些类型和术语的符号,目前我正在执行以下操作:

val assetElem     = Asset(typeOf[Display].member(TermName("kindOfDisplay")).asMethod)
val assetElem_2   = Asset(typeOf[Heat].typeSymbol)
val assetElem_3   = Asset(typeOf[Temperature.type].termSymbol)

有没有办法如何通过创建一个通用方法来优化这个代码,我只能在" typeOf"中提供类型参数?

这样的东西
def asset[T](s: T): Symbol = typeOf[T].typeSymbol

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是的,您只需要TypeTag[T]

def typeSymbol[T: TypeTag]: Symbol = typeOf[T].typeSymbol

typeSymbol[Heat]