|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[Java] Problema serio con una lista
Ciao,
da ieri stò combattendo con un problema che mi stà facendo impazzire. Magari è una cavolata ma non riesco a trovare una soluzione. Allora...dentro al metodo main di una classe chiamata Test ho il seguente codice: Codice:
// Lista delle attività nella forma voluta:
ListaAttivita la = new ListaAttivita();
// Lista delle attività restituita dal web service:
it.accenture.danni.services.AnagraficaServicesServiceStub.Attivita[] listaAttivitaWs = attivitaRes.getAttivitaPersonaReturn();
System.out.println("listaAttivitaWs punta a: " + listaAttivitaWs);
System.out.println("listaAttivitaWs ha tipo: " + listaAttivitaWs.getClass());
System.out.println("listaAttivitaWs ha " + listaAttivitaWs.length + " elementi");
System.out.println("Codice Attività prima posizione listaAttivitaWS: " + listaAttivitaWs[0].getCodiceAttivita());
System.out.println("Codice Attività seconda posizione listaAttivitaWS: " + listaAttivitaWs[1].getCodiceAttivita());
for(int i=0; i<listaAttivitaWs.length; i++){
// Creo una nuova attività:
Attivita attivitaCorrente = new Attivita();
// E ne setto i campi:
attivitaCorrente.setCodiceAttivita(listaAttivitaWs[i].getCodiceAttivita());
attivitaCorrente.setCodiceGradoAttivita(listaAttivitaWs[i].getCodiceGradoAttivita());
attivitaCorrente.setCodiceQualifica(listaAttivitaWs[i].getCodiceQualifica());
attivitaCorrente.setCodiceSettore(listaAttivitaWs[i].getCodiceSettore());
attivitaCorrente.setDataFineValidita(listaAttivitaWs[i].getDataFineValidita().getTime());
attivitaCorrente.setDataInizioValidita(listaAttivitaWs[i].getDataInizioValidita().getTime());
System.out.println("L'attività numero " + i + " ha codice: " + attivitaCorrente.getCodiceAttivita());
la.getListaAttivita().add(attivitaCorrente);
}
Poi sotto ho un altro oggetto chiamato listaAttivitaWs che rappresenta un array (giusto?) di attività che mi vengono restituite da un web service. Subito sotto ho una serie di istruzioni che mi stampano un po' di output che mi serve per verificare che l'array ricevuto dal web service contenga le corrette informazioni (ed in effetti ottengo i risultati desiderati perchè si trattava appunto di un array di 2 elementi ed i dati contenuti sono in effetti corretti). Il problema avviene nel ciclo for: praticamente [b]voglio trasferire i dati presenti nell'array ricevuto dal web service all'interno dell'oggetto la di tipo ListaAttivita (o per essere più precisi all'interno del campo private List<Attivita> listaAttivita; che stà dentro l'oggetto la in questione) Quindi il ciclo for scandisce tutto l'array ricevuto dal web service e ad ogni passo crea un nuovo oggetto chiamato attivitaCorrente di tipo Attivita (da inserire appunto nella lista). Setta correttamente i vari campi di tale oggetto estraendo i dati dai campi dell'array ricevuto dal web service ed infine inserisce l'oggetto all'interno del campo listaAttivita dell'oggetto la tramite l'istruzione Codice:
la.getListaAttivita().add(attivitaCorrente); La cosa strana è che: entra nel for, mi crea il primo oggetto di tipo attivitaCorrente, setta correttamente i suoi campi ma poi non inserisce l'oggetto e si schianta tirando su questa eccezione: Exception in thread "main" java.lang.NullPointerException at it.capgemini.axamps.motor.contactcenter.ricercaAnagrafica.Test.main(Test.java:127) Qualche idea in merito? Grazie mille Andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Potrei sbagliare ma, se parte una NullPointerException a questa riga:
Codice:
la.getListaAttivita().add(attivitaCorrente) 1) la è null 2) getListaAttivita() restituisce un riferimento nullo 3) attivitsCorrente è null e il metodo add è invocato su un'implementazione di una collezione che non accetta elementi nulli. Leggendo il codice postato escluderei banalmente le possibilità 1) e 3)... resta la 2). E' sufficiente invocare il costruttore Codice:
new ListaAttivita()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:12.



















