Java 方法/函数参数中的动态对象创建

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

我正在使用以下命令生成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 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人,谷歌挖出来的:我有一个预填充的地图,它会让我知道列名和它各自的值