2016-05-03 28 views
-2

オブジェクトリストにさまざまなタイプの変数(文字列と整数)を追加しようとしていますが、コードを実行しているときには常にNullPointerExceptionが発生します。私はすでにそれをデバッグし、変数はnullではありません。誰かが私を助けて、オブジェクトリストにさまざまなタイプの変数を追加する方法を教えてもらえますか?リストに整数と文字列を追加する<Object>

private int x; 
private int y; 
private int z; 
private int stockwerk; 
private String address; 
private List<Object> list; 

public List<Object> getAttributeList() { 

    list.add(1, this.x); 
    list.add(2, this.y); 
    list.add(3, this.z); 
    list.add(4, this.stockwerk); 
    list.add(5, this.address); 

    return this.list; 

} 
+1

"私はすでにそれをデバッグしており、変数はnullではありません" - あなたは1つを欠いていました。 – user2357112

+2

0の代わりにインデックス1から始まる要素を挿入するので、後でnullポインタエラーに陥ることにも注意してください。リストの最初の要素は常にnullになります.... – Ethan

答えて

4

たとえば、リストをlist = new ArrayList<Object>()(たとえば)で1回初期化する必要があります。それ以外の場合、リストはnullになり、list.addはNullPointerExceptionをスローします。

0

投稿したコードにいくつかの誤りがあります。

第一

あなたは第二

MyClass(){ 
    list = new ArrayList<Object>(); 
} 

リストを初期化することができますコンストラクタを定義:リストだけがオブジェクトを取ることができますので、することは、あなたがこれを行うことはできません。..

list.add(1, this.x); 
    list.add(2, this.y); 
    list.add(3, this.z); 
    list.add(4, this.stockwerk); 
    list.add(5, this.address); 

リストに整数または文字列を入れる必要があります。

あなたが本当にこれを行う必要がある場合:list.add(5, this.address);はあなたが挿入順を指定しようとしているためですが、あなたはそれを順番に行っているので、リストはあなたのためにそれを自動的に行うことができるのであまり意味がありません

代わりに整数+文字列をリストに入れようとしています(質問のタイトルのためにこれを推論することができます)。そしてアーキテクチャを再構築し、リストの代わりにマップを定義してください。リスト内のデータ....

関連する問題