我一直在C ++和VB中使用这个“逻辑”并取得了成功,但我在Java中被捆绑... 简单地说,
public void DataProviderExample(String user, String pwd, String no_of_links,
String link1, String link2, String link3) {
for (int i=1;i<=no_of_links;i++) {
String link = "link"+i;
System.out.println(link);
}
现在,如果变量link1
,link2
和link3
分别具有值“X”,“Y”和“Z”,则在运行此程序时,我得到了以下输出 -
link1
link2
link3
我想要的是 -
X
Y
Z
有什么想法吗?
答案 0 :(得分:5)
您可以使用varargs:
public void DataProviderExample(String user, String pwd, String... links) {
for (String link : links) {
System.out.println(link);
}
}
...
DataProviderExample("user1", "password1", "X", "Y", "Z");
DataProviderExample("user2", "password2", "Q");
通过这种方式,您可以传递所需数量的链接,运行时自动将这些链接放入一个数组中,您可以使用foreach循环进行迭代。
使用普通数组,调用会更麻烦(当然,除非你已经有数组中的链接):
public void DataProviderExample(String user, String pwd, String[] links) { ... }
DataProviderExample("user1", "password1", new String[] {"X", "Y", "Z"});
答案 1 :(得分:3)
为什么不使用数组呢?
答案 2 :(得分:0)
正如@Jan Kuboschek指出的那样,你应该使用数组。如果不这样做,请查看reflection。
答案 3 :(得分:0)
我很感激答案。我试图从外部Excel文件中检索该函数的参数。尝试两种方法,我遇到“java.lang.IllegalArgumentException:参数类型不匹配”错误。有什么想法吗? :)
声明: DataProviderExample(String user,String pwd,String ... links){...} 呼叫: DataProviderExample( “用户1”, “pwd1”, “X”, “Y”, “Z”); DataProviderExample( “用户2”, “pwd2”, “X”, “Y”);
我也尝试了“数组”方法并得到了相同的参数不匹配错误。 宣言: DataProviderExample(String user,String pwd,String [] links){...} 呼叫: DataProviderExample( “用户1”, “pwd1”,{ “X”, “Y”, “Z”}); DataProviderExample( “用户2”, “pwd2”,{ “X”, “Y”});
同样,正在从Excel文件中检索参数user1,user2,pwd1,pwd2和links数组。
感谢。