比较String []和像String []一样访问的varargs是否内容相等?

时间:2018-01-10 14:23:46

标签: java arrays variadic-functions

定义为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
    }        
}

1 个答案:

答案 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