通用方法作为上限不能将泛型类型作为参数

时间:2012-11-22 18:16:41

标签: scala generics

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

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

有没有让这项工作?

1 个答案:

答案 0 :(得分:0)

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