2015-10-31 3 views
-2

Я новичок в Java и пытаюсь в ArrayList CustomerList, который принимает объект клиента, где Клиента имеют атрибуты класса IAddress настройки. Однако при вызове метода .add в моем главном коде мне присваивается ошибка NullPointerException, которая, как я полагаю, дается, потому что мой метод не получает ничего, чтобы добавить в ArrayList. Я думал, что это проблема с инициализацией атрибутов пустых строк, но при редактировании их для хранения какой-либо информации ошибка все еще происходила.NullPointerException при добавлении объекта в ArrayList

ArrayList CustomerList

public class CustomerList { 

public ArrayList<Customer> Clients; 

public CustomerList() { 
    Clients = new ArrayList<>(); 
} 

public void add(Customer src) {   
    Clients.add(src); 
} 

public void remove(Customer src) { 
    Clients.remove(src); 
} 

public void Display(JTextArea jClientsTextArea) { 
    for (int i = 0; i < Clients.size(); i++) { 
     Clients.get(i).Display(jClientsTextArea); 
    } 
} 
} 

получает Клиент из этого класса

public class Customer { 

private String FirstName; 
private String Surname; 
private IAddress HomeAddress; 
public String DOB; 

public Customer() { 
    FirstName = ""; 
    Surname = ""; 
    DOB = "01/01/1900"; 
    HomeAddress = new IAddress(); 

    public void Display(javax.swing.JTextArea jAddressTextArea) { 
    jAddressTextArea.setLineWrap(true); 
    jAddressTextArea.append("First Name: " + FirstName + "\n"); 
    jAddressTextArea.append("Surname: " + Surname + "\n"); 
    jAddressTextArea.append("DOB:" + DOB + "\n"); 
    jAddressTextArea.append("Street: " + HomeAddress.getStreet() + "\n"); 
    jAddressTextArea.append("House Name: " + HomeAddress.getHouseName() + "\n"); 
    jAddressTextArea.append("House Number: " + HomeAddress.getHouseNo() + "\n"); 
    jAddressTextArea.append("Area: " + HomeAddress.getArea() + "\n"); 
    jAddressTextArea.append("Postcode: " + HomeAddress.getPostCode() + "\n"); 
    jAddressTextArea.append("Town: " + HomeAddress.getTown() + "\n"); 
    jAddressTextArea.append("Country: " + HomeAddress.getCountry() + "\n"); 
} 


    public void Edit(String strfirstname, String strsurname, String strDOB, String strStreet, String strHouseName, String strHouseNo, String strHouseArea, String strPostCode, String strTown, String strCountry) { 
    FirstName = strfirstname; 
    Surname = strsurname; 
    DOB = strDOB; 
    HomeAddress.setStreet(strStreet); 
    HomeAddress.setHouseName(strHouseName); 
    HomeAddress.setHouseNo(strHouseNo); 
    HomeAddress.setArea(strHouseArea); 
    HomeAddress.setPostCode(strPostCode); 
    HomeAddress.setTown(strTown); 
    HomeAddress.setCountry(strCountry); 
} 
} 

который получает атрибуты из IAddress

public class IAddress { 

private String Name; 
private String Street; 
private String HouseNo; 
private String HouseName; 
private String Area; 
private String PostCode; 
private String Town; 
private String Country; 

public IAddress() { 
    Name = ""; 
    Street = ""; 
    HouseNo = ""; 
    HouseName = ""; 
    Area = ""; 
    PostCode = ""; 
    Town = ""; 
    Country = ""; 
} 



public void setName(String strName) { 
    Name = strName; 
} 

public void setStreet(String strStreet) { 
    Street = strStreet; 
} 

public void setHouseNo(String strHouseNo) { 
    HouseNo = strHouseNo; 
} 

public void setHouseName(String strHouseName) { 
    HouseName = strHouseName; 
} 

public void setArea(String strArea) { 
    Area = strArea; 
} 

public void setPostCode(String strPostCode) { 
    PostCode = strPostCode; 
} 

public void setTown(String strTown) { 
    Town = strTown; 
} 

public void setCountry(String strCountry) { 
    Country = strCountry; 
} 

} 

Я несколько часов стучал головой об этой проблеме и готов к тому, чтобы это было что-то глупое. Спасибо.

+5

Не рассчитывайте. Прочитайте и опубликуйте трассировку стека исключений и сделайте выводы. –

+1

И покажите нам код, вызывающий все это, пожалуйста, –

+2

Duplicate (пока не можете голосовать) -> [Что такое исключение Null Pointer Exception и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – Pshemo

ответ

1

В вашем коде выше только причина, по которой звонок myCustomerList.add(...) может быть заброшен, так это то, что myCustomerList сам по себе null. Это связано с тем, что внутри него инициализируется Clients, и он никогда не будет установлен на null. Значение src не имеет значения - вызов Clients.add(src) преуспеет, даже если src - null.

Вы должны убедиться, что в вашем main вы инициализировать список клиентов, как это:

CustomerList list = new CustomerList(); 
+0

Была именно эта проблема, большое вам спасибо. Извините за то, что вы не публикуете полный журнал ошибок и основной код, это небольшая часть гораздо большего проекта, над которым я работал, и у меня не было времени, чтобы вырезать соответствующий раздел кода. –