2014-04-14 73 views
1

我有一个客户端服务器程序中的方法,这意味着创建一个citylist类的实例,它只是一个城市的数组列表...线程“Thread-0”中的异常java.lang.NullPointerException

(此方法是在服务器)

public void listCities() { 
    CityList LoadCities = new CityList(); 
    String CityDetails = LoadCities.cities.toString(); 
    try { 
     dos.writeUTF("These are the cities serviced by the ssystem"); 
     dos.writeUTF(ServerConstants.CR_LF); 
     dos.writeUTF(CityDetails); 
    } catch (IOException ex) { 
     Logger.getLogger(SocketHandler.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 

的CityList类是这样的:

public class CityList { 

public ArrayList<City> cities; 
    City melbourne = new City("Melbourne"); 
    City sydney = new City("Sydney"); 
    City darwin = new City("Darwin"); 
    City launceston = new City("Launceston"); 
    City hobart = new City("Hobart"); 

//default constructor 
public CityList() { 
    cities.add(melbourne); 
    cities.add(sydney); 
    cities.add(darwin); 
    cities.add(launceston); 
    cities.add(hobart); 
} 


//other constructor 
public CityList(ArrayList<City> cities) { 
    this.cities = cities; 
} 

public int size() 
{ 
    return cities.size(); 
} 



} 

客户端存在于一个线程...服务器在自己的线程类的SocketHandler调用一个套接字句柄EXT结束线程 类的SocketHandler继承Thread

当我尝试调用特定的方法(表市)

Exception in thread "Thread-0" java.lang.NullPointerException 
at hotelbroker.CityList.<init>(CityList.java:30) 
at hotelbroker.SocketHandler.listCities(MultiEchoServer.java:153) 
at hotelbroker.SocketHandler.run(MultiEchoServer.java:95) 

我知道这是因为我是一个的n00b,我需要调用我不断地得到这个错误某种这种实例thingummy我只是不知道...

+4

'公共的ArrayList 城市;'未初始化。 –

回答

1

当你不初始化实例字段,他们默认初始化为null。在这种情况下,您尝试使用此实例变量

public ArrayList<City> cities; 

没有初始化它。因此它是null

当您尝试调用上null引用的方法,喜欢这里

cities.add(melbourne); 

你得到一个NullPointerException

你必须初始化它,无论是在声明

public ArrayList<City> cities = new ArrayList<>(); 

,或者你使用之前

cities = new ArrayList<>(); 
cities.add(melbourne); 
+1

..........谢谢! –

0
public CityList() { 
    cities = new ArrayList<City>(); 
    cities.add(melbourne); 
    cities.add(sydney); 
    cities.add(darwin); 
    cities.add(launceston); 
    cities.add(hobart); 
} 
相关问题