Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216

    [Java]Passaggio per valore

    Il mio libro di Java afferma che i riferimenti a oggetto vengono copiati per valore.
    Per esempio nel seguente statement

    conto1.trasferisciDenaro(ContoBancario altroConto);
    altroConto è passato per valore

    Ok sono d'accordo, ma poi non capisco il meccanismo successivo, il libro continua a dire:
    "un metodo Java può aggiornare lo stato di un oggetto ma non può sostituire il contenuto di un riferimento a oggetto"

    Praticamente se il metodo trasferisciDenaro fosse fatto cosi:
    Codice PHP:
    public void trasferisciDenaro(ContoBancario altroContodouble denaro)
    {
        
    altroConto.versaDenaro(denaro);  //questa istruzione è ok
        
    altroConto = new ContoBancario();  //non funziona
       
    ...

    non capisco come fa a funzionare la prima istruzione, come fa a modificare altroConto se gliel'ho passato per valore e non per riferimento?

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

    Re: [Java]Passaggio per valore

    Originariamente inviato da raff5184
    non capisco come fa a funzionare la prima istruzione, come fa a modificare altroConto se gliel'ho passato per valore e non per riferimento?
    Quello che il metodo riceve è una copia del reference che ha il chiamante. E quindi entrambi (metodo e chiamante) faranno riferimento allo stesso oggetto.
    Se l'oggetto è "mutabile" ovvero ha campi accessibili o metodi set o simili allora il metodo può certamente modificare lo stato dell'oggetto.
    Se nel metodo si assegna un nuovo reference al parametro, questo non ha alcuna influenza sul reference che ha il chiamante. Semplicemente da quel punto in avanti il parametro farà riferimento ad un altro oggetto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    ah ecco è una copia della reference non dell'oggetto!
    perfetto, grazie

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.