以方法为上限的泛型不能将泛型类型作为参数



我正在尝试创建一个泛型工厂方法,该方法具有一个方法的上限,该方法采用该泛型类型的参数并返回该泛型类型的内容。我试过了,

def apply[Type <: {def *(that: Type): Type}](length: Int)(implicit manifest: Manifest[Type]) = new Array[Type](length)

但是我收到此错误,

Parameter type in structural refinement may not refer to an abstract type defined outside that refinement

有没有办法做这个工作?

根据该错误消息,您应该*定义为泛型函数,如下所示: def apply[Type <: {def *[Type](that: Type): Type}](length: Int)(implicit manifest: Manifest[Type]) = new Array[Type](length)

最新更新