将多维数组作为文字传递给Java中的方法调用

时间:2015-05-06 08:17:12

标签: java multidimensional-array variadic-functions

我已经编写了两种方便的方法来访问参数化sql查询/执行的更复杂的方法。

第一个是:

public int sqlExecute(String sql, String... parameters)

我可以像

一样打电话
sqlExecute("exec blah ?, ?, ?", "param1", "param2", "param3");

第二个定义为:

public int sqlExecute(String sql, String[]... parameters)

应该用数组[2] [无论大小]调用,在第一列中保存类型(更​​准确地说是它的" table.column"提供类型的字段...我必须以这种方式实现它),第二个是要使用的参数值。

这样的电话
sqlExecute("exec blah ?, ?", {"account.name", "foo"}, {"account.region", "bar"});

导致令牌上的语法错误,删除这些令牌" (使用Eclipse Luna)。 这句话不正确吗?

我希望实现的是,我不必定义一些保存数组的变量,而是使用类似方法#1调用方法。 还有另一种方式吗?

2 个答案:

答案 0 :(得分:4)

您应该将其称为

sqlExecute("exec blah ?, ?", 
    new String[] {"account.name", "foo"}, 
    new String[] {"account.region", "bar"});

您可以添加一个辅助方法来缩短它:

public static String[] arr(String... args) {
    return args;
}

sqlExecute("exec blah ?, ?", 
    arr("account.name", "foo"), 
    arr("account.region", "bar"));

答案 1 :(得分:3)

您需要使用

sqlExecute("exec blah ?, ?",
        new String[] {"account.name", "foo"},
        new String[] {"account.region", "bar"});