Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] clone

    Sappiamo che la funzione clone fa una shallow copy dell'oggetto che si vuole creare.
    Se ho un oggetto O1, che come attributo ha un altro oggetto O2, quando faccio una clone su O1 creando quindi l'oggetto O3 avrò la situazione che l'oggetto O2 è condiviso.

    Vorrei sapere allora come fare ad avere O2 distinti: devo ridefinire clone personalmente?!?

    Grazie!
    ...c'è chi come te attende l'alba...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] clone

    Originariamente inviato da np2k
    devo ridefinire clone personalmente?!?
    Esatto: la tua classe deve prima di tutto implementare l'interfaccia Cloneable (che è solo un "marker"). Poi devi fare l'override di clone(), marcandolo public. All'interno del tuo clone fai super.clone (). Inoltre se il tuo oggetto contiene altri oggetti, devi fare il clone tu di questi oggetti.
    Se non ti è chiaro, posso postare un esempio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok.Tutto chiaro,
    Ma un esempio non fa mai male!
    Grazie!
    ...c'è chi come te attende l'alba...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    1
    ciao, il concetto del clone mi è chiaro ma nel mio caso ho un oggetto O1 che ha come campo interno un HashMap che come chiave usa oggetto di tipo O1 e come valore un ArrayList<O2>
    adesso quando io ho reimplementato clone senza problemi ma ovviamente su questi campi verrà fatta una shallow copy e non una copia vera, in quanto le classi HashMap ed ArrayList hanno il loro metodo clone che credo venga chiamato quando io chiamo clone su O1, quindi come faccio a copiarli veramente?oppure non è necessario?
    ho sbagliato qualcosa nel mio ragionamento?
    grazie
    ciao
    giacomo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.