在比较Java中的数组时,以下两个语句之间是否有任何区别?
array1.equals(array2);
Arrays.equals(array1, array2);
Run Code Online (Sandbox Code Playgroud)
如果是这样,他们是什么?
我一直试图使用Mockito模拟一个使用vararg参数的方法:
interface A {
B b(int x, int y, C... c);
}
A a = mock(A.class);
B b = mock(B.class);
when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b);
assertEquals(b, a.b(1, 2));
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是如果我这样做:
when(a.b(anyInt(), anyInt())).thenReturn(b);
assertEquals(b, a.b(1, 2));
Run Code Online (Sandbox Code Playgroud)
尽管我在删除方法时完全省略了varargs参数,但这仍然有效.
有线索吗?
更新到 2.3 后,来自mockito 1 的方法不起作用。
private class ArgumentsMatcher implements ArgumentMatcher<Object[]> {
private final Object[] expected;
private ArgumentsMatcher(Object[] expected) {
this.expected = expected;
}
@Override
public boolean matches(Object[] argument) {
return Arrays.equals(expected, argument);
}
}
Run Code Online (Sandbox Code Playgroud)