Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    6

    Conversione da Object a String

    Salve a tutti, sono nuova del mondo Java (ma non della programmazione) e dopo aver letto un libro introduttivo sto tentando di fare il mio primo programma...
    Quello che vorrei fare è capire come "recuperare" il contenuto di un oggetto generico Object quando contiene una stringa...

    Inizialmente avevo fatto il tentativo:

    codice:
    public class Prova{
        public static void main(String[] agrs){
                Object oggetto = new Object();
                oggetto = "Proviamo così";
                System.out.println(oggetto);
        }
    };
    E questo funzionava senza problemi, ma se tento un passaggio dell'oggetto da una funzione ad un'altra, non va più niente:

    codice:
    public class Prova{
    
        static void passaggio(Object obj){
            obj = "Proviamo così";
        }
        
        public static void main(String[] agrs){
                Object oggetto = new Object();
                passaggio(oggetto);
                System.out.println(oggetto);
        }
    };
    Ho letto su vari forum della ridefinizione del metodo toString(), ma non riesco a capire bene come poterla ridefinire....
    Grazie dell'aiuto!

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

    Re: Conversione da Object a String

    Originariamente inviato da aba82
    codice:
        static void passaggio(Object obj){
            obj = "Proviamo così";
        }
    Se assegni qualcosa al parametro 'obj', non cambia nulla nel chiamante per la variabile 'oggetto' del main!!
    Perché 'obj' è un'altra variabile, ben distinta da 'oggetto' a cui inizialmente viene assegnata una copia del reference presente in '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
    Jun 2007
    Messaggi
    6
    Grazie della risposta!
    Ero convinta che in Java gli oggetti venissero sempre passati per riferimento... L'ho letto da qualche parte, ma devo aver frainteso la questione
    Vedrò di approfondire

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    39
    Ankio credevo che in Java gli oggetti venissero sempre passati per referenza!
    E ne sono ancora convinto anche perchè se no non si potrebbe mai modificare un oggetto con un metodo...
    Comunque prova a fare (String)oggetto per trasformarlo...oppure oggetto.toString()! Non sono sicuro di aver capito cosa vuoi fare, ma non dovrebbe essere necessario ridefinire nulla!

  5. #5
    Le variabili sono riferimenti.
    Quando li passi ad un metodo vengono passati per valore (copia).

    Esempio:
    codice:
    Object rif1 = new Object();
    ...
    in memoria ho 1 oggetto creato con new Object() e 1 riferimento (variabile rif1)

    codice:
    passaggio(rif1);
    static void passaggio(Object rif2) {
       ...
    }
    ora ho sempre 1 oggetto ma 2 riferimenti ! rif1 e rif2 che puntano allo stesso oggetto, rif2 è visibile nel metodo che sto eseguendo, rif1 no.

    codice:
       rif2 = "Proviamo così";
    ora ho creato un altro oggetto, la stringa, a l'ho assegnata a rif2, rif1 non è cambiato!

    Quando esco dal metodo rif2 non è più visibile da nessuno, la stringa non ha più riferimenti validi e verrà fatta fuori dal garbage collector, mi rimane solo rif1 che punta sempre a new Object()

    per i primitivi (int, long, char ecc..) il discorso è un pò diverso perchè non sono oggetti.

  6. #6
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da GoodbyeSoberDay
    per i primitivi (int, long, char ecc..) il discorso è un pò diverso perchè non sono oggetti.
    Giusto per tutto, tranne i primitivi , su Java tutti i parametri vengono passati per valore
    codice:
    int i=1;
    passaggio(i); // che sia static void passaggio(int x) { x=2; }
    // i sarà ancora 1

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    6
    Come faccio allora a modificare un oggetto a cui un riferimento "si riferisce"?
    Se rif1 e rif2 si riferiscono alla stessa zona di memoria (quella che "prenoto" con l'operazione new Object) perchè con l'operazione
    codice:
     rif2 = "Proviamo così"
    rif2 và a riferire un nuovo oggetto invece di modificare l'oggetto a cui si riferiva in precedenza?

    Scusate, sicuramente saranno banalità ma questa cosa mi sta facendo impazzire!!!

  8. #8
    L'operatore = assegna un altro oggetto a quella variabile/riferimento, se vuoi modificare rif1 dal tuo metodo lo passi come parametro, ci fai quello che vuoi, poi torni il risultato, nel main assegni rif1 con quello che ti ritorna il metodo, così:

    codice:
    public class Prova{
    
        static String test(String rif2){
            return rif2 + "def"
        }
        
        public static void main(String[] agrs){
                String rif1 = "abc";
                rif1 = test(rif1);
                System.out.println(rif1);
        }
    };
    Questo stampa "abcdef";

  9. #9
    Aggiungo che tutte le variabili che puntano ad uno stesso oggetto, rif1 rif2 ecc, sono si delle copie ma totalmente separate, se vuoi che rif1 punti a qualcos'altro nel tuo codice ci deve essere per forza rif1 = qualcosa.

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.