Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将多维数组作为文本传递给方法调用_Java_Multidimensional Array_Variadic Functions - Fatal编程技术网

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

在Java中将多维数组作为文本传递给方法调用,java,multidimensional-array,variadic-functions,Java,Multidimensional Array,Variadic Functions,我编写了两个方便的方法,用于访问用于参数化sql查询/执行的更复杂的方法 第一个是: public int sqlExecute(String sql, String... parameters) 我可以这样称呼它 sqlExecute("exec blah ?, ?, ?", "param1", "param2", "param3"); sqlExecute("exec blah ?, ?", {"account.name", "foo"}, {"account.region", "bar

我编写了两个方便的方法,用于访问用于参数化sql查询/执行的更复杂的方法

第一个是:

public int sqlExecute(String sql, String... parameters)
我可以这样称呼它

sqlExecute("exec blah ?, ?, ?", "param1", "param2", "param3");
sqlExecute("exec blah ?, ?", {"account.name", "foo"}, {"account.region", "bar"});
第二个定义为:

public int sqlExecute(String sql, String[]... parameters)
应该使用数组[2][无论大小]来调用它,该数组在第一列中保存类型(更准确地说是提供类型的字段的“table.column”…我必须以这种方式实现它),第二列保存要使用的参数值

像这样的电话

sqlExecute("exec blah ?, ?, ?", "param1", "param2", "param3");
sqlExecute("exec blah ?, ?", {"account.name", "foo"}, {"account.region", "bar"});
导致“令牌语法错误,删除这些令牌”(使用EclipseLuna)。 这不是正确的语法吗

我希望实现的是,我不必定义一些保存数组的变量,而是使用数组文本调用方法,就像使用方法#1一样。
还有别的办法吗?

你应该这样称呼它

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"));
你需要使用

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

好,。。。这是相当不幸的,一个人必须做这么多额外的代码(是的,我很懒:)。有什么原因不能跳过之前的“新字符串[]”吗(如果他们将其实现到语言中)?不过,谢谢你的回答。编辑了答案。也许你会更喜欢这个版本。