Java 方法/函数参数中的动态对象创建
我正在使用以下命令生成orc文件Java 方法/函数参数中的动态对象创建,java,scala,Java,Scala,我正在使用以下命令生成orc文件 import org.apache.hadoop.io.Text; import org.apache.hadoop.hive.ql.io.orc._; val orcLine:OrcStruct = OrcUtils.createOrcStruct( typeInfo, new Text(value1), new T
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.ql.io.orc._;
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5));
然而,这里的挑战是,有时我可能有5个值(值1…值5),有时有10个值(值1…值10),有时有20个值(值1…值20),这取决于某些条件
我怎样才能将这种动态行为带到这里
比如如果值是10,我应该有
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5),
new Text(value6),
new Text(value7),
new Text(value8),
new Text(value9),
new Text(value10));
我有时也可能有
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)));
我目前正在使用Scala 2.11版
非常感谢您的帮助 假设您的参数存储在列表中:
val params = List(
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)))
)
正如您可能注意到的,将对象的可变列表作为第二个参数
为了在scala中以varargs形式传递列表,您需要使用:\u*
。在方法调用期间,它会将您的列表作为varargs“展开”:
OrcUtils.createOrcStruct(typeInfo, params:_*)
可变参数?或者一个列表?嗯,我怎么做,代码?你怎么确定你有多少个值?不是scala人,谷歌挖出来的:我有一个预填充的地图,它会让我知道列名和它各自的值