小编dec*_*ctl的帖子

Kotlin 类未识别为 Flink 有效 POJO

我正在用 Kotlin 编写 Flink 应用程序,并且数据类(以及其他 Kotlin 类)未被识别为有效的 POJO 类型。

Flink 文档指出,如果满足以下条件,则数据类型被识别为 POJO 类型(并允许“按名称”字段引用):

  • 该类是公共且独立的
  • 该类有一个公共无参构造函数
  • 类中的所有非静态、非瞬态字段要么是公共的(且非最终的),要么具有遵循 Java bean 命名约定的公共 getter 和 setter 方法。

我在实现 Kotlin 数据类时收到以下信息,该数据类应满足上述条件才能被识别为 POJO:

[main] INFO org.apache.flink.api.java.typeutils.TypeExtractor - 
Class class <Class> cannot be used as a POJO type because not all 
fields are valid POJO fields, and must be processed as GenericType. 
Please read the Flink documentation on "Data Types & Serialization" 
for details of the effect on performance.
Run Code Online (Sandbox Code Playgroud)

进一步调查,我回顾了Flink的TypeExtractor.isValidPojoField方法@ https://github.com/apache/flink/blob/master/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor .java

在一个单独的项目中,我在一个简单的 Kotlin 数据类上应用了 java.lang.reflect.Modifier 的字段检查,试图缩小问题范围。 …

kotlin apache-flink

5
推荐指数
1
解决办法
2047
查看次数

标签 统计

apache-flink ×1

kotlin ×1