定义为String的varargs可以像String []一样访问。
但是当比较2个String数组时,equals方法返回false,一个作为varargs传递,另一个作为String []传递。
是否有直接的方法来测试两个数组中内容的相等性?例如,使用Arrays.equals
方法。
这里是示例:
public String[] getParams() {
return params;
}
public void testForEquality(String... param) {
if (Arrays.equals(getParams(), param)) {
// do something
}
}
答案 0 :(得分:3)
我做了一点测试,我认为你错过了一些东西,因此我的测试按预期通过了。
private String[] params = {"1", "2", "3"};
public String[] getParams() {
return params;
}
public boolean testForEquality(String... param) {
return Arrays.equals(getParams(), param);
}
然后测试是:
System.out.println(testForEquality("1", "2", "3"));
System.out.println(testForEquality("-1", "2", "3"));
System.out.println();
System.out.println(testForEquality(new String[] {"1", "2", "3"}));
System.out.println(testForEquality(new String[] {"2", "3"}));
然后输出:
true
false
true
false