Nếu kiểu mảng là không rõ, bạn có thể không chỉ đơn giản là đúc để Object[]
, và do đó không thể sử dụng các phương pháp (equals
, deepEquals
) trong java.util.Arrays
.
Tuy nhiên, bạn có thể sử dụng phản chiếu để có được độ dài và các mục của các mảng và so sánh chúng một cách đệ quy (các mục có thể là mảng).
Dưới đây là một phương pháp tiện ích chung để so sánh hai đối tượng (mảng cũng được hỗ trợ), cho phép một hoặc thậm chí cả hai để được null:
public static boolean equals (Object a, Object b) {
if (a == b) {
return true;
}
if (a == null || b == null) {
return false;
}
if (a.getClass().isArray() && b.getClass().isArray()) {
int length = Array.getLength(a);
if (length > 0 && !a.getClass().getComponentType().equals(b.getClass().getComponentType())) {
return false;
}
if (Array.getLength(b) != length) {
return false;
}
for (int i = 0; i < length; i++) {
if (!equals(Array.get(a, i), Array.get(b, i))) {
return false;
}
}
return true;
}
return a.equals(b);
}
Nguồn
2014-11-11 15:28:22
gia tăng một số bộ phận khai báo method (public static ...) - nếu không nó tìm cho tôi như là phương pháp ruby gọi với khối được thông qua :-) – Vladimir