2017-03-29 9 views
-1

一時的なリストに要素を追加しようとすると、いくつかの検索関数が疑われ、nullポインタ例外が発生しました。NullポインタJava関数

ユーザー:

public class User { 

    private Id _id; 
    private String number; 
    private String name; 
    private String mark; 
    private String model; 
    private List <Address> addresses; 

    public Id get_id() { 
     return _id; 
    } 

    public void set_id(Id _id) { 
     this._id = _id; 
    } 

    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String user) { 
     this.number = number; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 

    public String getMark() { 
     return mark; 
    } 

    public void setMark(String mark) { 
     this.mark = mark; 
    } 

    public List <Address> getAddresses() { 
     return addresses; 
    } 

    public void setAddresses(List <Address> addresses) { 
     this.addresses = addresses; 
    } 
} 

住所:tempList.add(user);私はNPEを取得しているラインで

public class Address { 

    private String name; 
    private Date dateFrom; 
    private Date dateTo; 

    public Date getDateTo() { 
     return dateTo; 
    } 

    public void setDateTo(Date dateTo) { 
     this.dateTo = dateTo; 
    } 

    public Date getDateFrom() { 
     return dateFrom; 
    } 

    public void setDateFrom(Date dateFrom) { 
     this.dateFrom = dateFrom; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 


private List <User> findUsers(List <User> users, String park) { 
    List <User> tempList = null; 
    List <Address> addresses = null; 
    for (User user: users) { 
     addresses = user.getAddresses(); 
     for (Address address: addresses) { 
      if (address.getName().equals(park)) 
       tempList.add(user); 
     } 
    } 
    return tempList; 
} 

+0

を記述する必要が

ArrayListの

ようなリストを実装するクラスを使用する必要があります。 – Gendarme

+0

'tempList = new ArrayList <>();を追加します。 'の前に' tempList.add(user); 'があります。あなたは 'リスト< User >を持っている必要がありますtempList = new ArrayList <>();' – pRaNaY

答えて

1

nullを指す変数でメソッドを実行しようとすると、NULLポインタ例外が呼び出されます。

あなたの例では、あなたが

List<User> tempList = null; 

を持って、あなたはそれを初期化したことがないとあとでとしてそれを使用する:

tempList.add(user); 

あなたがする必要があるのは、それを初期化している:)

List<User> tempList = new ArrayList<User>(); 

あなたの例では、

private List<User> findUsers (List <User> users, String park){ 
    List<User> tempList = new ArrayList<User>(); 
    List<Address> addresses = new ArrayList<Address>(); 
    for (User user : users) { 
     addresses = user.getAddresses(); 
     for (Address address : addresses) { 
      if (address.getName().equals(park)) 
       tempList.add(user); 
     } 
    } 
    return tempList; 
} 

乾杯!

List<User> tempList = null; 
List<Address> addresses = null; 

あなたのリストは、あなたがそれらを初期化することはありませんNULLです:あなたはこれがあなたの問題である。この

List<User> tempList = new List<User>; 

List<Address> addresses = new ArrayList<Address>(); 
+1

私は謝罪したいと思います、これは愚かなエラーです、私は彼に気づかなければなりません、あなたの答えのためにbtw :) – adelantedev

+0

私たちは皆、私はちょうど助けていたすべての人をupvoteに覚えていることを忘れないようにしてください:) –

1

。 はこのようなものを追加します。

List<User> tempList = new ArrayList(); 
List<Address> addresses = new ArrayList(); 
+0

私は謝りたい、これは愚かなエラーです、そして、私は彼に気づかなければなりません、あなたの答えをありがとう:) – adelantedev

+0

OKです。おかげで幸運 – user7575308

1

この

List<User> tempList = null; 
List<Address> addresses = null; 

を交換する必要が

+0

私は謝罪したい、これは愚かなエラーです、そして、私は彼に気づく必要がありますあなたの答えのためにbtw :) – adelantedev

1

オブジェクトをtempList作成されていないので、あなたがコード

tempList.add(user); 

にnullを取得します。代わりにList<User> tempList = null;

リストの

は、このようにあなたがそのコンストラクタを呼び出すことはできませんインターフェースです。

は、あなたはあなたがあなたのリストを初期化する必要がList<User> tempList = new ArrayList<User>();

+0

私は謝罪したい、これは愚かなエラーです、そして、私は彼に気づかなければなりませんbtw答え:) – adelantedev