我正在尝试创建一个通用工厂方法,该方法具有一个方法的上限,该方法接受该泛型类型的参数并返回该泛型类型的内容。我试过这个,
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
有没有让这项工作?
答案 0 :(得分:0)
根据该错误消息,您应该将*
定义为通用函数,如下所示:
def apply[Type <: {def *[Type](that: Type): Type}](length: Int)(implicit manifest: Manifest[Type]) = new Array[Type](length)