我有一个应用程序允许 TupleI<x,y,z>
要在运行时通过maven原型创建的数据类型。通过java反射,我知道x、y、z等原始数据类型最终是什么。我也知道x,y或z等是否也被定义为元组。当我试图将源输入中的值Map到扩展类下时,问题就出现了 RichMapFunction<Tuple<x,y,z>>
-例如,我可以使用tuple.setfield(avalue,position)将源Map到主元组定义,但如果主元组定义包含嵌套元组,则不能,即没有tuple.setfield(avalue,1).setfield(“,0)。在本例中,我们试图设置元组中第一个数据段的值,该元组定义为在字段1处有一个元组,因此有点类似于:- Tuple2<String,Tuple1<Integer>>
. 任何可能的方法(请记住,不能将字段引用为f0、f1、f2等,因为它们在运行时可能不存在,因此应用程序永远无法编译。我可以写一些东西来创建可以引用f0、f1、f2的方法,也就是说,在创建应用程序之前,在将这些方法注入原型之前,可以引用任意多个a——但是这是一项相当大的工作,而且听起来很冒险,因为我所做的只是设置一个类非常熟悉的值。
1条答案
按热度按时间tjvv9vkg1#
如果它有助于任何人的底线,或在我个人的兴趣,争取可能更好的React,这种代码,(不太好)做的工作在未来end:-
只要你想买多少就买多少。当然,当您要填充实值时,setfield()调用必须使内部字段的类型与它所期望的数据类型相匹配——否则类强制转换正在等待您。但这不是问题,因为您尝试动态填充的flink元组知道它声明为什么,所以忽略了您创建了object类型的字段和默认字符串,并且非常高兴地接受相应数据类型的解析值—因此,如果您声明一个tuple1,它将很高兴地接受string对象顶部的integer字段值,毫无疑问,这与它抛出所述的类强制转换一样好。奇怪的是,它是这样工作的,也就是说,你不能把你的嵌套值设置为已知的类型,你需要这个对象字符串到实际的数据类型kludge(或者至少我做到了)