Strano nullPointerException in Java
-
10-07-2019 - |
Domanda
Sto scrivendo un'app per Java ME e ho bisogno di una classe per conservare alcuni dati (Rubrica). Quando provo ad avviare questa app, ricevo sempre nullPointerException. Sto chiamando il costruttore di una classe e alloca memoria per 10 elementi, quindi non dovrebbe essere nullo. Che cosa sto facendo di sbagliato?
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class TinyMIDlet extends MIDlet implements CommandListener {
private PhoneBook phoneBook = new PhoneBook();
public void initPhoneBook() {
phoneBook.records[0].Name = new String("abc");
}
protected void startApp() {
initPhoneBook();
}
public class Record {
public String Name;
public String Number;
public String email;
public String Group;
}
public class PhoneBook {
public Record[] records;
PhoneBook() {
records = new Record[10];
}
}
}
Soluzione
L'array di record non è nullo, ma lo è ogni singolo elemento. Devi anche istanziare ogni elemento, in questo momento è solo un array con 10 voci null.
Altri suggerimenti
phoneBook.records[0].Name = new String("abc");
dovrebbe essere
phoneBook.records[0] = new Record();
phoneBook.records[0].Name= new String("abc");// or = "abc"
Non sono ancora abbastanza affidabile (heh) per modificare la risposta dettagliata di Tom, ma, per essere precisi
phoneBook.records[0] = new something();
dovrebbe essere
phoneBook.records[0] = new Record();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow