比较 String[] 和像 String[] 一样访问的可变参数的内容相等性?
Compare String[] and varargs accessed like String[] for content equality?
定义为 String...的可变参数可以像 String[] 一样访问。
但是 equals 方法 returns 在比较 2 个字符串数组时为 false,一个作为可变参数传递,另一个作为 String[]。
有没有直接的方法来测试两个数组中内容的相等性?例如使用 Arrays.equals
方法。
举个例子:
public String[] getParams() {
return params;
}
public void testForEquality(String... param) {
if (Arrays.equals(getParams(), param)) {
// do something
}
}
我做了一个小测试,我认为你遗漏了一些东西,因此我的测试按预期通过了。
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
定义为 String...的可变参数可以像 String[] 一样访问。
但是 equals 方法 returns 在比较 2 个字符串数组时为 false,一个作为可变参数传递,另一个作为 String[]。
有没有直接的方法来测试两个数组中内容的相等性?例如使用 Arrays.equals
方法。
举个例子:
public String[] getParams() {
return params;
}
public void testForEquality(String... param) {
if (Arrays.equals(getParams(), param)) {
// do something
}
}
我做了一个小测试,我认为你遗漏了一些东西,因此我的测试按预期通过了。
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