我正在尝试创建一个泛型工厂方法,该方法具有一个方法的上限,该方法采用该泛型类型的参数并返回该泛型类型的内容。我试过了,
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)