@SuppressWarnings("unchecked")
<T> T serialClone(T o) { try {
ObjectInputStream ois = new ObjectInputStream
(new ByteArrayInputStream(serialBytes(o)));
T clone = (T) ois.readObject();
assertNotSame(o, clone);
assertSame(o.getClass(), clone.getClass()); return clone;
} catch (Exception fail) { thrownew AssertionError(fail);
}
}
@Test publicvoid testSerialization() {
ArrayDeque[] ds = { new ArrayDeque(), new ArrayDeque(rnd.nextInt(20)) }; for (ArrayDeque d : ds) { if (rnd.nextBoolean()) d.add(99);
ArrayDeque clone = serialClone(d);
assertInvariants(clone);
assertNotSame(elements(d), elements(clone));
assertEquals(d, clone);
}
}
/** Checks conditions which should always be true. */ void assertInvariants(ArrayDeque d) { final Object[] elements = elements(d); finalint head = head(d); finalint tail = tail(d); finalint capacity = elements.length;
assertTrue(0 <= head && head < capacity);
assertTrue(0 <= tail && tail < capacity);
assertTrue(capacity > 0);
assertTrue(d.size() < capacity);
assertTrue((head == tail) ^ (elements[head] != null));
assertNull(elements[tail]);
assertTrue((head == tail) ^ (elements[Math.floorMod(tail - 1, capacity)] != null));
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.