質問

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ではありませんが、個々の要素はnullです。各要素もインスタンス化する必要があります。現在は、10個のnullエントリを持つ単なる配列です。

他のヒント

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