如何从Scala中的通用类型产生类型信息



我正在尝试使用通用类型

扩展 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 = ???
}

相关内容

  • 没有找到相关文章

最新更新