Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220

    classi wrapper immutabili

    Che vergogna!! Uso Java da parecchio e non mi ero mai bloccato davanti a un problema del genere...dicesi passaggio di parametri per riferimento!!

    Ok ok....la storia del puntatore che viene passato per valore, quindi LUI è costante e non può puntare ad un altro oggetto.....la so! Voglio soffermarmi sul fatto che googlando alla ricerca della soluzione al mio problema si legge spesso una cosa del genere: "i tipi primitivi vengono passati tutti per valore quindi volendoli passare per riferimento bisogna adoperare le classi wrapper...."

    Ma come?? Ma se Integer, String, Character ecc ecc sono tutte immutabili???

    Io devo fare una cosa stupidissima, questa!!

    private void increment(Integer x){..}

    Non si può proprio?

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

    Re: classi wrapper immutabili

    Originariamente inviato da stirkland
    Che vergogna!! Uso Java da parecchio e non mi ero mai bloccato davanti a un problema del genere...dicesi passaggio di parametri per riferimento!!
    In Java il passaggio degli argomenti è sempre e solo per "valore".

    Originariamente inviato da stirkland
    Ok ok....la storia del puntatore che viene passato per valore, quindi LUI è costante e non può puntare ad un altro oggetto.....
    No, non è "costante", quando passi un valore ad un metodo, esso riceve una copia dell'argomento, sia primitivo o reference. Che viene assegnato ad un parametro del metodo. A meno che questo parametro sia marcato "final", sei libero di assegnargli altri valori all'interno del metodo. E questo non andrà ad influire assolutamente sul valore che ha passato il chiamante.

    Originariamente inviato da stirkland
    Voglio soffermarmi sul fatto che googlando alla ricerca della soluzione al mio problema si legge spesso una cosa del genere: "i tipi primitivi vengono passati tutti per valore quindi volendoli passare per riferimento bisogna adoperare le classi wrapper...."

    Ma come?? Ma se Integer, String, Character ecc ecc sono tutte immutabili???
    Sì, String, Integer, Short, Long e gli altri "wrapper" sono immutabili. Nessuno dei loro metodi cambia lo stato dell'oggetto.

    Originariamente inviato da stirkland
    Io devo fare una cosa stupidissima, questa!!

    private void increment(Integer x){..}

    Non si può proprio?
    No, non si può, non così. Nel metodo potresti solo fare in modo che la variabile 'x' faccia riferimento ad un altro oggetto Integer. Ma come ho detto sopra, non influirebbe assolutamente sul reference che ha passato il chiamante.

    Puoi fare una tua classe che ha uno stato "mutabile" composto di un Integer, in modo che il metodo chiamato possa modificare lo stato e quindi rendere visibile al chiamante il nuovo Integer.
    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.