【发布时间】:2015-03-18 00:53:08
【问题描述】:
我有一个反射集合类型,我需要比较它是否是某种集合。我该怎么做?
val a = List(1,2,3)
val b = currentMirror.classSymbol(a.getClass).typeSignature
println("Q? "+ (b =:= typeOf[List[_]]))
当然,这总是错误的。在实践中,我有一个集合列表,用 _ 概括。我需要知道给定的类型(通常在其参数中是特定的)是否是这些集合之一。例如,我需要知道 List[Int] 是否是 List[_]。
实际情况是这样的:泛型类型的映射 -> 我需要的函数:
val collectionHandlers = Map(
typeOf[scala.collection.immutable.List[_]] -> fnList,
typeOf[scala.collection.immutable.Map[_,_]] -> fnMap,
//...
)
val aListType = // something here that is a TypeSignature of List[Int] as above
collectionHandlers( _magicClean(aListType) )()
_magicClean 是我需要帮助的地方。如何“概括”特定类型的集合,以便地图查找起作用?
【问题讨论】:
标签: scala reflection