předchozí - obsah části - obsah - další | dotazy/odpovědi

Kopírování polí

V Javě obecně přiřazení proměnné objektového typu vede pouze k duplikaci odkazu, nikoli celého odkazovaného objektu.

Nejinak je tomu u polí, tj.:

Clovek[] lidi2;
lidi2 = lidi1;
je v pořádku, ale pole lidi2 je totožné s polem lidi. Chceme-li skutečně zduplikovat celé pole, musíme:
Clovek[] lidi2 = new Clovek[5];
System.arraycopy(lidi, 0, lidi2, 0, lidi.length);
což do pole lidi2 (předtím již musí být vytvořeno, ale nemusí obsahovat žádný neprázdný odkaz!!!) zkopíruje všechny prvky z pole lidi. Podrobněji k metodě arraycopy viz např. Dokumentace API třídy "System"Samozřejmě bychom mohli kopírovat prvky ručně, např. pomocí for cyklu, ale volání System.arraycopy je zaručeně nejrychlejší a přitom stále platformově nezávislou metodou, jak kopírovat pole.

Také arraycopy však do cílového pole zduplikuje jen odkazy na objekty, nevytvoří kopie objektů!


předchozí - obsah části - obsah - další | dotazy/odpovědi
Slidy předmětu byly navštíveny krát.