如何在scala中从泛型类型生成类型信息

pkwftd7m  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(404)

我在努力扩展 DeserializationSchema 对于泛型类型为的类

class Foo[T] extends DeserializationSchema[T] {
...
  override def getProducedType: TypeInformation[T] = TypeInformation.of(classOf[T])
}

但我现在
需要类类型,但找不到重写def getproducedtype:typeinformation[t]=typeinformation.of(classof[t])
有什么想法吗

rkkpypqq

rkkpypqq1#

而不是推导 classOfT ,可以要求隐式 TypeInformation[T] 作为…的一部分 Foo 的声明:

class Foo[T](implicit typeInformation: TypeInformation[T]) extends DeserializationSchema[T] {
  override def getProducedType: TypeInformation[T] = typeInformation

  override def deserialize(message: Array[Byte]): T = ???

  override def isEndOfStream(nextElement: T): Boolean = ???
}
dm7nw8vv

dm7nw8vv2#

根据文件
对于泛型类型,您需要通过typehint“捕获”泛型类型信息:
所以你可以这样编译

class Foo[T] extends DeserializationSchema[T] {
...
  override def getProducedType: TypeInformation[T] = TypeInformation.of(new TypeHint[T]{})
}

相关问题