gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:51:43 26 4
gpt4 key购买 nike

我使用以下命令生成 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 个值 (value1 ... value5),有时可能有 10 个值 (value1 ... value10),有时可能有 20 个值 (value1 ... value20),具体取决于某些条件。

我如何才能将这种动态行为带到这里?

就像如果值为 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)))
)

正如您可能注意到的那样 OrcUtils.createOrcStruct将对象的可变列表作为第二个参数。

为了在 scala 中将列表作为可变参数传递,您需要使用 :_*。它会在方法调用期间将您的列表“传播”为可变参数:

OrcUtils.createOrcStruct(typeInfo, params:_*)

关于java - 方法/函数参数中的动态对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com