我正在为Java ME编写一个应用程序,我需要一个用于保存一些数据的类(PhoneBook)。当我试图启动这个应用程序时,我总是得到一个nullPointerException。我正在调用类的构造函数,它为10个元素分配内存,所以它不应该为null。我究竟做错了什么?

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];
        }
    }
}
有帮助吗?

解决方案

记录数组不为null,但它的每个元素都是。您还需要实例化每个元素,现在它只是一个包含10个空条目的数组。

其他提示

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

应该是

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

我还没有足够的信誉来编辑Tom的详细答案,但是,确切地说

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

应该是

phoneBook.records[0] = new Record();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top