我正在尝试使用通用类型
扩展DeserializationSchema
class Foo[T] extends DeserializationSchema[T] {
...
override def getProducedType: TypeInformation[T] = TypeInformation.of(classOf[T])
}
但是我得到了
所需的类类型,但发现覆盖def def getproduccedType: typeInformation [t] = typeInformation.of(classof [t](
任何想法
根据文档
对于通用类型,您需要"捕获"通用类型信息 通过TypeHint:
因此,您可以像这样将其编译成
class Foo[T] extends DeserializationSchema[T] {
...
override def getProducedType: TypeInformation[T] = TypeInformation.of(new TypeHint[T]{})
}
而不是从 T
派生 classOf
,而是需要隐式 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 = ???
}