2012-04-12 33 views

Odpowiedz

14

Łańcuchy w Javie są niezmienne (nie można zmienić ich wartości). Tak więc nie ma wykrywalnej różnicy między głęboką i płytką kopią podczas kopiowania ciągów.

I tylko w celu dalszego odniesienia: kopia będzie płytka, ale nie powinno to stanowić problemu, ponieważ łańcuchy są niezmienne.

No i zabawny fakt: napisów nie można sklonować za pomocą metody klonowania, więc jeśli spróbujesz wykonać głęboką kopię ciągów za pomocą metody klonowania, otrzymasz wyjątek CloneNotSupportedException.

+0

Autor prosi o skopiowanie 'String []', a nie 'String'. Elementy 'instancesFilename' mogą być później zmieniane z zewnątrz, więc OP chce utworzyć kopię tablicy. –

+0

Cóż to jest * wykrywalne * (odniesienia są takie same), ale jeśli używasz łańcuchów poprawnie, nie powinno to być * znaczące *. –

+0

@PhilippReichart: Ale OP wykonuje już klon - "głęboka kopia" kontra "płytka kopia" w tym kontekście może dotyczyć tylko tego, czy łańcuchy są klonowane czy nie - i jak stwierdza ta odpowiedź, prawie zawsze jest to nieistotne. –

1

Oto interesująca article discussing using serialization to make deep copies.

Obiekty na wykresie wywołania muszą obsługiwać szeregowanie, jednak w wielu typach aplikacji biznesowych o trzech poziomach istnieje taka konieczność.

Artykuł zawiera omówienie głębokiego kopiowania i płytkiej kopii z niektórymi diagramami.

Powiązane problemy