我正在尝试将DeserializationSchema
扩展为具有通用类型的类
class Foo[T] extends DeserializationSchema[T] {
...
override def getProducedType: TypeInformation[T] = TypeInformation.of(classOf[T])
}
但是我得到
类类型是必需的,但T发现覆盖def getProducedType: TypeInformation [T] = TypeInformation.of(classOf [T])
任何想法
答案 0 :(得分:0)
对于泛型类型,您需要“捕获”泛型类型信息 通过TypeHint:
所以您可以像这样编译它
class Foo[T] extends DeserializationSchema[T] {
...
override def getProducedType: TypeInformation[T] = TypeInformation.of(new TypeHint[T]{})
}
答案 1 :(得分:0)
您可以要求隐式classOf
作为T
声明的一部分,而不是从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 = ???
}