在Java中将多维数组作为文本传递给方法调用
我编写了两个方便的方法,用于访问用于参数化sql查询/执行的更复杂的方法 第一个是:在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
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"});
好,。。。这是相当不幸的,一个人必须做这么多额外的代码(是的,我很懒:)。有什么原因不能跳过之前的“新字符串[]”吗(如果他们将其实现到语言中)?不过,谢谢你的回答。编辑了答案。也许你会更喜欢这个版本。