Scala 如何编写执行泛型类型的case语句的函数?

Scala 如何编写执行泛型类型的case语句的函数?,scala,Scala,我想写一个这样的函数: def genericCase[T]() : PartialFunction[Any, T] = { case Wrapper(_, item: T) => item case Wrapper(item: T, _) => item } 换句话说,我想找到一种方法来重用不同类型的模式匹配结构。 编译器告诉我由于类型擦除,案例x:T将永远不会匹配。有什么方法可以替代这种通用的case语句?我还尝试使用reflectapi中的类型作为函数的参数,但

我想写一个这样的函数:

def genericCase[T]() : PartialFunction[Any, T] = { 
   case Wrapper(_, item: T) => item
   case Wrapper(item: T, _) => item
}
换句话说,我想找到一种方法来重用不同类型的模式匹配结构。

编译器告诉我由于类型擦除,
案例x:T
将永远不会匹配。有什么方法可以替代这种通用的case语句?我还尝试使用reflectapi中的类型作为函数的参数,但我们无法理解这一点

您只需添加一个隐式
ClassTag
,它允许在泛型类上进行匹配:

import scala.reflect.ClassTag

def genericCase[T: ClassTag]() : PartialFunction[Any, T] = {
 case Wrapper(_, item: T) => item
 case Wrapper(item: T, _) => item
}