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

    [JAVA] protoype e clone

    avrei bisogno di un informazione:
    nel design pattern prototype è necessaria un operazione di deep clone tra oggetti.
    so per certo che clonare un oggetto è meno dispendioso sia in termini di tempo che di memoria rispetto a crearne uno nuovo tramite una new Classe();

    qualcuno saprebbe dirmi esattamente perchè??

    grazie
    osserva il gregge che pascola innanzi a te....

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    innanzitutto dipende che oggetto devi clonare...

    Se provi a clonare un oggetto incluso nei pacchetti standard del JDK è più veloce nel clonarsi perchè richiama codice nativo della macchina...

    Se infatti vai a vedere tra i sorgenti di java vedi che il metodo clone() ad esempio del Calendar richiama una metodo nativo...

    Se invece la classe è nuova, stà a te implementarti il metodo clone, che probabilmente sarà un new Classe...

    Questo è il mio piccolo sapere, ciao.
    Let's your dream came true!

  4. #4
    quindi se le mie classi estendono la classe java cloneable potrei ottenere del codice "ottimizzato" anche con classi costruite da me, implementando il metodo clone senza nuove instanzazione tramite new... giusto?

    grazie x il chiarimento!
    osserva il gregge che pascola innanzi a te....

  5. #5
    innanzitutto le tue classi estendono la classe Object, e devono fare l'override del metodo clone(), ma devono anche implementare l'interfaccia java.lang.Clonable (che in realtà è vuota )

    Il metodo clone() lo puoi implementare come vuoi, anche se nella JavaDoc ti da dei suggerimenti su come implementarlo...
    Naturalmente se la tua classe implementa l'interfaccia Clonable e fa l'override del metodo clone() diciamo che nn viene implementato in automatico...ovvero devi essere cmq tu a definirlo...

    tipo:
    codice:
    INDIRIZZO IN MEMORIA DIVERSO> x.clone() != x
    STESSA CLASSE> x.clone().getClass() == x.getClass()
    METODO equals positivo> x.clone().equals(x)
    naturalmente nn parlo tanto per esperienza quanto per conoscenza...
    ovvero mi sono e mi stò informando...

    io in genere guardo direttamente i sorgenti delle classi, e guardandoli sono giunto a questa conclusione...
    Let's your dream came true!

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.