Tôi không biết nếu điều này sẽ giúp bất cứ ai, nhưng điều này dường như được làm việc:
if(type == type_BooleanArray) {
boolean eq = Arrays.equals((boolean[]) thisObj, (boolean[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_ByteArray) {
boolean eq = Arrays.equals((byte[]) thisObj, (byte[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_ShortArray) {
boolean eq = Arrays.equals((short[]) thisObj, (short[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_CharArray) {
boolean eq = Arrays.equals((char[]) thisObj, (char[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_IntArray) {
boolean eq = Arrays.equals((int[]) thisObj, (int[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_LongArray) {
boolean eq = Arrays.equals((long[]) thisObj, (long[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_FloatArray) {
boolean eq = Arrays.equals((float[]) thisObj, (float[]) thatObj);
if(!eq) {
return false;
}
} else if(type == type_DoubleArray) {
boolean eq = Arrays.equals((double[]) thisObj, (double[]) thatObj);
if(!eq) {
return false;
}
} else {
if(!thisObj.equals(thatObj)) {
return false;
}
}
Rõ ràng array.equals(otherArray)
nào một array == otherArray
, và không phải những gì bạn mong đợi .
Tôi đã bị Skeeted! –
Tôi nghĩ rằng có một phương pháp thư viện, nhưng tinh chỉnh đã ném tôi đi bằng cách đề cập đến deepEquals() ngay lập tức. Arrays.equals() thực hiện chính xác phương thức này với thay đổi của bạn, mặc dù nó cũng lưu trữ a.length trong một biến tạm thời (trước khi so sánh độ dài). –
Cảm ơn! Và tôi biết một số điều này, cảm ơn đã nhắc tôi ... người đàn ông SO đã khiến tôi lười biếng! –