如何编写采用泛型的泛型函数,该泛型实现了采用其他泛型的类

时间:2019-08-07 20:28:27

标签: scala generics

  def recordToType[A <: TBase[T, F]](record: ConsumerRecord[String, Array[Byte]]): A = {
    (new TDeserializer(new TCompactProtocol.Factory())).deserialize(new A[T, F](), record.value())
  }

以上语法不起作用,但基本上我希望A限于TBase,但TBase需要两个类型参数。如果我遗漏了那些参数,则表明该参数是必需的;如果我输入了这些参数,则表明该参数未解决...编写此参数的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以这样写方法的签名:

ws.page_breaks.append(page_break)  # insert page break

但是您的代码还有另一个问题。您不能像这样创建新的泛型类型实例:

ws.row_breaks.append(page_break)  # insert page break

它将显示类似于以下内容的错误:import scala.language.higherKinds def recordToType[T, F, A[_, _] <: TBase[T, F]](record: ConsumerRecord[String, Array[Byte]]): A[T,F]

尽管如此,您不能使用隐式new A[T, F] 来捕获Error:(15, 9) class type required but A[T,F] found类:

A