gpt4 book ai didi

java - 如何调用数组的 vararg 方法?

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

我在JOOQ api中发现了一个奇怪的方法。

Batch batch(Query query, Object[]... bindings);

我很好奇如何在不手动指定参数的情况下调用它。

public int g(Object[]... args) {
return args.length;
}

失败:

assertEquals(2, g(new Object[] { new Object[0], new Object[0] }));

最佳答案

API 是什么意思?

API 的目的是以矩阵形式为批处理语句提供一组绑定(bind)值,其中每个外部数组元素对应于批处理中的单个语句,每个内部数组元素对应于一个绑定(bind)值。

怎么称呼?

有几种方法。让我们假设这个查询:

Query query = DSL.query("INSERT INTO t(a, b) VALUES (?, ?)", null, null);

例如在 Java 中使用经典的矩阵创建(可变参数在这里没有帮助):

batch(query, new Object[][] {
{ 1, "a" }, // Record 1 to insert
{ 2, "b" }, // Record 2 to insert
{ 3, "c" } // Record 3 to insert
});

或者,通过使用单独的数组(这就是可变参数可能有帮助的地方):

batch(query, 
new Object[] { 1, "a" }, // Record 1 to insert
new Object[] { 2, "b" }, // Record 2 to insert
new Object[] { 3, "c" } // Record 3 to insert
);

如果您有一些预先存在的 jOOQ 记录结构,并且您希望将它们作为绑定(bind)变量传递给批处理,则后者特别有用,例如通过使用 Record.intoArray() :

batch(query,
record1.intoArray(),
record2.intoArray(),
record3.intoArray()
);

关于java - 如何调用数组的 vararg 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42719257/

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