Pregunta

Estoy escribiendo una aplicación para Java ME y necesito una clase para guardar algunos datos (PhoneBook). Cuando intento iniciar esta aplicación, siempre obtengo una nullPointerException. Llamo al constructor de una clase, y asigna memoria para 10 elementos, por lo que no debería ser nulo. ¿Qué estoy haciendo mal?

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];
        }
    }
}
¿Fue útil?

Solución

La matriz de registros no es nula, pero sí cada elemento individual. También debe crear una instancia de cada elemento, en este momento es solo una matriz con 10 entradas nulas.

Otros consejos

phoneBook.records[0].Name = new String("abc");  

debería ser

phoneBook.records[0] = new Record();
phoneBook.records[0].Name= new String("abc");// or  = "abc"

Todavía no tengo la suficiente reputación (heh) para editar la respuesta detallada de Tom, pero, para ser precisos

phoneBook.records[0] = new something();

debería ser

phoneBook.records[0] = new Record();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top