Om te oefenen met het proces van klonen gebruiken we de situatie uit de slides en de theorie:
Maak een ArrayList
met een aantal Person
en er in.
Geef de lijst aan een externe methode die het eerste element verwijderd en het derde element wijzigt.
private void changeList(ArrayList<Person> list) {
// ...
}
Bevestig dat deze methode de originele lijst veranderd heeft.
Voordat je de lijst aan de changeList
methode aanbiedt, maak je erst een nieuwe lijst aan en kopieer alle Person
en uit de originel lijst naar de nieuwe lijst.
Bevestig dat, in jouw originele lijst, de eerste Person
nog steeds aanwezig is, maar de derde Person
is nog steeds gewijzigd.
Deep Clone
van de lijst mee.Kopieer deze keer niet aleen de lijst, maar maak ook clones van alle Person
en.
Bevestig dat in de originele lijst de eerste Person
nog steeds aanwezig is. Deze keer blijft de derde Person
ongewijzigd. Alle wijzigingen gebeuren nu enkel in de gekloonde lijst.
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.