Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    68

    Copiare oggetti senza farli puntare allo stesso riferimento

    Ciao, io ho il seguente metodo:

    public void processaRamoParallelo(Parallelo paral){
    }

    al suo interno per motivi di ricorsione ho bisogno di creare una copia del parametro paral,ho provato con

    Parallelo parClonato = paral;

    ma ovviamente copia le locazioni di memoria per cui modificando i sottooggetti di parClonato si modificano anche quelli di Paral.

    Esiste un modo per creare completamente un nuovo oggetto che contenga i dati dell'oggetto da copiare senza che puntino alla stesse zone di memoria (sia per l'oggetto che per i campi?)

    thanks

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

    Re: Copiare oggetti senza farli puntare allo stesso riferimento

    Originariamente inviato da battle
    Esiste un modo per creare completamente un nuovo oggetto che contenga i dati dell'oggetto da copiare senza che puntino alla stesse zone di memoria (sia per l'oggetto che per i campi?)
    Sì, ma dipende da come è fatta la classe Parallelo e da quanto vuoi/puoi modificarla.
    Una soluzione "standard" è fare l'override di clone() dichiarando anche di implementare l'interfaccia Cloneable.
    Un'altra soluzione è definire quello che si può chiamare in gergo un "costruttore di copia", un costruttore che riceve un reference dello stesso tipo. Es.:

    public Parallelo (Parallelo p) {
    .... inizializza copiando da p ....
    }

    Ma non sarebbe una soluzione standard. Nulla comunque vieta di crearti un qualunque altro metodo che ritorna una copia dell'oggetto o un metodo statico che si occupa di creare un nuovo oggetto dato uno passato. Soluzioni comunque molto drastiche e poco pulite/standard.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.