Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421

    [JAVA] Problema con array di oggetti

    Salve,
    il problema che vi sottopongo è veramente banale, ma non sto capendo il perché accada!

    Ho una classe Word (con relativo costruttore), e voglio crearmi in un metodo di una classe collegata un'array di oggetti Word. Uso questo metodo

    codice:
    Word[] ret = new Word[i];
            
    for (int j=0; j<i; j++)
        ret[j].setName(tmp[j]);
    Ma facendo così mi ritorna un'eccezione in quanto gli oggetti Word che stanno dentro ret sono tutti nulli.
    Se, invece, uso questo codice più lungo, va tutto ok

    codice:
    Word[] ret = new Word[i];
    Word w = new Word();
    
    for (int j=0; j<i; j++) {
         w.setName(tmp[j]);
         ret[j] = w;;
    }
    come mai?
    Tutte le leggi umane, non quelle divine, sono il risultato di uno sforzo di uomini. Altri uomini vengono, modificano, aboliscono, perfezionano. Non ci vuole nulla ad abolire. Distruggere è facile, ma ricostruire è difficile.

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

    Re: [JAVA] Problema con array di oggetti

    Originariamente inviato da JAEP
    Ma facendo così mi ritorna un'eccezione in quanto gli oggetti Word che stanno dentro ret sono tutti nulli.
    Appunto, la regola è questa: quando viene istanziato un array (non subito inizializzato), tutti gli elementi hanno il valore di "default" (per i reference appunto null).

    Originariamente inviato da JAEP
    Se, invece, uso questo codice più lungo, va tutto ok
    codice:
    Word[] ret = new Word[i];
    Word w = new Word();
    
    for (int j=0; j<i; j++) {
         w.setName(tmp[j]);
         ret[j] = w;;
    }
    come mai?
    Ovviamente ora hai istanziato un oggetto Word .... però ne hai solo 1 e tutti gli elementi dell'array fanno riferimento a questo stesso oggetto. E quasi sicuramente non è quello che volevi. Dovresti istanziare un nuovo oggetto Word ad ogni ciclo.
    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.