We gaan opnieuw kijken naar onze lijst implementatie. Jouw lijst is hopenlijk volkomen veilig zoadat extenen niet jouw previous
en next
referenties kunnen wijzigen. (Wanneer jouw lijst een methode genaamd public Node<?> getNode()
bevat dan moet je dat eerst corrigeren!)
Voor ons gemak maken we een versie van de lijst die de Cloneable
interface implementeerd.
Maak een nieuwe decendant van de lijst die de originele lijst implementatie uitbreidt met de Cloneable
interface.
Hint 1: Dit kan er voor zorgen dat ook de elementen van de lijst Cloneable
moeten implementeren.
Hint 2: Hoewel de structuur van de lijst best lastig kan zijn is het maken van een kloon niet zo heel moeilijk.
Nadat je een gekloonde lijst gemaakt het wil je natuurlijk bevestigen via unittest dat je succesvol was.
Gebruik de assertEquals
methode zodat de equals
methode bevestigd dat de twee instanties gelijk zijn.
Gebruik alsjeblieft ook de assertNotSame
methode (dit is het omgekeerde van assertSame
) om te bevestigen dat de elementen van de lijst niet gewoon naar de dezelfde referentie verwijzen!
Dus ieder element in de originele list moet equivalent zijn met ieder element in de kloon, maar ze moeten niet hetzelfde object zijn.