Невозможно добавить в список в рамках коллекции классов

Новое в коллекциях и опробование кода ниже, я получаю следующее упражнение:

Исключение в потоке "main" java.lang.NullPointerException в org.first.collectionsframework.CollectionsFirsttest.addCountytolist в org.first.collectionsframework.CFTmain.main(CFTmain.java:16)

Мои классы приведены ниже, может ли кто-то указать на то, что я делаю неправильно:

1-й: КоллекцииFirsttest

2nd: CFTmain

public class CollectionsFirsttest {

 String name;
 int employeeID;
 String city;
 List<string> county;

/* constructor*/
public CollectionsFirsttest(){
}

public String getName() {
 return name;
}

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

public int getEmployeeID() {
 return employeeID;
}
public void setEmployeeID(int employeeID) {
 this.employeeID = employeeID;
}
public String getCity() {
 return city;
}
public void setCity(String city) {
 this.city = city;
}

public void addCountytolist(String x)
{
 this.county.add(x);
 System.out.println("County added is:" +x);
}


} 
</string>

2nd: CFTmain

public class CFTmain {

public static void main(String[] args)
{
 CollectionsFirsttest CFTobject1=new CollectionsFirsttest();
 CollectionsFirsttest CFTobject2=new CollectionsFirsttest();
 List<object> objlist= new ArrayList<object>();

 CFTobject1.setName("Dummy");
 CFTobject1.setEmployeeID(001);
 CFTobject1.setCity("Wonderland");
 CFTobject1.addCountytolist("cvs1");
 CFTobject1.addCountytolist("cvs2");
 CFTobject1.addCountytolist("cvs3");

 CFTobject2.setName("Pumkin");
 CFTobject2.setEmployeeID(002);
 CFTobject2.setCity("Wonderland");
 CFTobject2.addCountytolist("mtv1");
 CFTobject2.addCountytolist("mtv2");
 CFTobject2.addCountytolist("mtv3");

 objlist.add(CFTobject1);
 objlist.add(CFTobject2);

 display(objlist);

} 
public static void display(List<object> l)
{
 System.out.println(" The values in list:"+System.identityHashCode(l));
 for (Object d: l)
 {
System.out.println("the values in the first object is"+System.identityHashCode(d));
 System.out.println ("The name in"+ d.getClass());
 }
}
}
 <p> Для некоторых людей моя ошибка может быть довольно простой, но поскольку я новичок, надеюсь, что она меня съест. Я запускаю ошибку, как только я пытаюсь ввести графство в Список. CFTobject1.addCountytolist( "cvs1");</p> </object></object></object>
3 ответа

Вы должны использовать конструктор объекта, чтобы инициализировать все, что нужно объекту, прежде чем вы начнете его использовать. В частности, здесь вы должны инициализировать "графство":

public class CollectionsFirsttest {
 List<string> county;
 ...

 public CollectionsFirsttest(){
 county = new ArrayList<string>();
 ...
</string></string>


Вам нужно инициализировать List который хранит округа. Хорошим местом для этого является конструктор класса. Если вы не знакомы с алмазным оператором, вы можете написать

county = new ArrayList<string>();
</string>

иначе это

county = new ArrayList<>();

Вы также должны подумать о добавлении private final в объявление List.


Вы никогда не инициализируете этот список. Вы только указали ссылку. Вам нужен new ArrayList<>() где-то и назначить это графству.

licensed under cc by-sa 3.0 with attribution.