Вопрос

Я пишу приложение для Java ME, и мне нужен класс для хранения некоторых данных (телефонная книга). Когда я пытаюсь запустить это приложение, я всегда получаю исключение nullPointerException. Я вызываю конструктор класса, и он выделяет память для 10 элементов, поэтому он не должен быть нулевым. Что я делаю неправильно?

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];
        }
    }
}
Это было полезно?

Решение

Массив записей не является нулевым, но каждый его отдельный элемент. Вам также нужно создать экземпляр каждого элемента, сейчас это просто массив с 10 пустыми записями.

Другие советы

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

должно быть

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

Я еще недостаточно авторитетен (хех), чтобы редактировать подробный ответ Тома, но, если быть точным

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

должно быть

phoneBook.records[0] = new Record();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top