求助:如何将给定 Java 基本类型的 Class 对象转换为 Flink 的 DataType?

22次阅读

共计 674 个字符,预计需要花费 2 分钟才能阅读完成。

如何将给定 Java 基本类型的 Class 对象转换为 Flink 的 DataType?
就像这样:

    public static RowType convertToDataType(Class pojo) {...}

    Field[] fields = pojo.getDeclaredFields();
	for (Field field : fields) {if (Modifier.isStatic(field.getModifiers())) {continue;}
		String fieldName = field.getName();
		DataType fieldType = convertToDataType(field.getType());
		RowType.RowField rowField = new RowType.RowField(fieldName, fieldType.getLogicalType());
		rowFields.add(rowField);
	}

我在 Flink 的内置函数中,没有找到用于转换的方法。
这种情况只能自己写方法吗?类似:

private static DataType convertToDataType(Class clazz) {if (clazz == CharSequence.class) {return DataTypes.STRING();
        }
        if (clazz == String.class) {return DataTypes.STRING();
        }
        if (clazz == int.class || clazz == Integer.class) {return DataTypes.INT();
        }
        ...
}
正文完
 0