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

    [java] - passaggio parametri all interno di un metodo

    Salve, ho un prob.
    ho la necessita di passare in un metodo un oggetto per riferimento
    ora, in java so che i tipi primitivi vengono passati per riferimento ma tutti gli altri tipi di dati per valore.
    come faccio a passare un tipo Object per riferimento all interno di un metodo?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    39
    Se ho capito bene la domanda la prima cosa che mi viene in mente e' metterlo come parametro del metodo e farlo ritornare come oggetto del metodo stesso.

    public Object metodo(Object <obj>) {

    [......qui modifichi <obj> come vuoi......]

    return <obj>;
    }

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

    Re: [java] - passaggio parametri all interno di un metodo

    Originariamente inviato da ngs
    in java so che i tipi primitivi vengono passati per riferimento ma tutti gli altri tipi di dati per valore.
    No, in Java qualunque cosa viene passata per valore, viene cioè passata una copia. Ma nota, per i tipi primitivi è una copia del valore mentre per i tipi reference è una copia del reference.

    In sostanza se passi un reference ad un metodo, il metodo può eventualmente modificare lo stato dell'oggetto (ammesso che sia "mutabile") ma non può in alcun modo cambiare il valore del reference che ha il chiamante.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    --------------------------------------------------------------------------------------
    Re: [java] - passaggio parametri all interno di un metodo Citazione:
    Originariamente inviato da ngs
    in java so che i tipi primitivi vengono passati per riferimento ma tutti gli altri tipi di dati per valore.No, in Java qualunque cosa viene passata per valore, viene cioè passata una copia. Ma nota, per i tipi primitivi è una copia del valore mentre per i tipi reference è una copia del reference.

    In sostanza se passi un reference ad un metodo, il metodo può eventualmente modificare lo stato dell'oggetto (ammesso che sia "mutabile") ma non può in alcun modo cambiare il valore del reference che ha il chiamante.
    --------------------------------------------------------------------------------------

    io ho bisogno di fare questa cosa:


    public void Pippo(String[] f){
    f = new String[]{"1","2"}
    }

    Code di avvio:

    String[] d = null;
    Pippo(d);
    System.out.print("" + d[0] + "-" + d[1]);

    Risultato: 1-2


    si puo fare?
    se si come?
    12

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ngs
    codice:
    public void Pippo(String[] f){
         f = new String[]{"1","2"}
    }
    
    Code di avvio:
    
    String[] d = null;
    Pippo(d);
    Come ho detto sopra, viene passata una copia del reference. Al metodo Pippo viene passata una copia del reference che, nel caso specifico sopra, vale null. Assegnare nel metodo Pippo qualcosa alla variabile 'f' non ha alcuna ripercussione sulla variabile 'd' nel chiamante!!!

    'f' è semplicemente un'altra variabile che contiene una copia del valore contenuto in 'd'.

    Per far in modo che il metodo possa fornire i valori dell'array, ci sono solo 2 strade:

    a)
    codice:
    public void pippo (String[] f) {
        f[0] = "1";
        f[1] = "2";
    }
    
    ...
    String[] d = new String[2];
    pippo (d);
    b)
    codice:
    public String[] pippo () {
        return new String[] { "1", "2" };
    }
    
    ...
    String[] d = pippo ();
    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.