我在某个类中有以下方法:
def writeGeneric[G <: GenericTrait](value: G)
我正在使用Scala宏处理该方法。此方法的提取类型参数m.typeParams
打印为type G <: GenericTrait
。
m
为MethodSymbol
的位置。
如何测试其他类型是否确认此类型边界? 例如,这不起作用:
typeOf[OtherType] <:< m.typeParams.head.typeSignature
答案 0 :(得分:0)
我找到了带有手动边界检查的解决方案:
val typeParamSymbol = m.typeParams.head
val other = typeOf[OtherType]
val typeMatched = typeParamSymbol.typeSignature match {
case TypeBounds(lo,hi) ⇒
lo <:< other && other <:< hi
case other: Type ⇒
left <:< other
}
仍然希望有更好的解决方案。