Вы должны удалить
com.ExecuteReader();
из своего кода, эта строка бесполезна, так как вы не назначаете ссылку для считывателя (в следующей строке вы получаете ссылку и правильно назначаете ее в своем коде. переменная «читатель»)
Вы могли бы хотеть проверить java.util. Arrays.deepEquals и java.util. Методы Arrays.equals.
Я боящийся equals
метод для объектов массива выполняет мелкое сравнение и не делает правильно (по крайней мере, для этого случая), сравнивают внутреннее Character
массивы.
равняется (), метод на массивах является тем, объявленным в Классе объекта. Это означает, что будет только возвращать true, если объект будет тем же. Тем же это означает не то же в СОДЕРЖАНИИ, но то же в ПАМЯТИ. Таким образом равняется () на Ваших массивах, никогда не будет возвращать true, поскольку Вы копируете структуру в памяти.
Тест для равенства original.equals (клон); выкладывает ложь. Почему?:|
поэтому Вы создаете новый массив с new Character[original.length][];
.
Arrays.deepEquals(original,clone)
должен возвратить true.
Я нашел этот ответ для клонирования многомерных массивов на jGuru:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Object deepCopy = ois.readObject();
/**Creates an independent copy(clone) of the boolean array.
* @param array The array to be cloned.
* @return An independent 'deep' structure clone of the array.
*/
public static boolean[][] clone2DArray(boolean[][] array) {
int rows=array.length ;
//int rowIs=array[0].length ;
//clone the 'shallow' structure of array
boolean[][] newArray =(boolean[][]) array.clone();
//clone the 'deep' structure of array
for(int row=0;row<rows;row++){
newArray[row]=(boolean[]) array[row].clone();
}
return newArray;
}