0

我正在为 Java ME 编写一个应用程序,我需要一个类来保存一些数据(PhoneBook)。当我试图启动这个应用程序时,我总是得到一个 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];
        }
    }
}
4

3 回答 3

13

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

于 2009-10-29T16:24:27.727 回答
4
phoneBook.records[0].Name = new String("abc");  

应该

phoneBook.records[0] = new Record();
phoneBook.records[0].Name= new String("abc");// or  = "abc"
于 2009-10-29T16:46:00.163 回答
0

我还没有足够的声誉(呵呵)来编辑汤姆的详细答案,但是,准确地说

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

应该

phoneBook.records[0] = new Record();
于 2009-10-29T16:49:59.173 回答