在编写lab3时,先根据spec完成了测试文件的编写,完成poll接口的具体实现GeneralPollImpl后,对其进行了测试,却发现了这样的错误:
查看Fail Trace,发现显示的异常为java.lang.NullPointerException
上网查资料可以发现这个异常被称为空指针异常,出现这种异常的可能原因有:接口类型的对象没有用具体的类初始化,比如使用Set set;时就会报错;字符串变量未初始化,比如定义了String str = null;然后使用了这个字符串,就会抛出空指针异常。
我觉得出现这种错误的原因是接口或者是具体类的创建方法有问题,我在接口poll中构造方法的实现返回了一个新的GeneralPollImpl,模仿了lab2中Graph接口与ConcreteEdgesGraph类的构造方法,在Graph中直接返回一个空的ConcreteEdgesGraph类,而ConcreteEdgesGraph类的构造方法直接保持空即可
所以我在这次的实验中也采用这样的方法:
然而我却忽视了二者rep的不同,在实验三中,我并没有初始化candidates,Voters等属性,而在测试文件中直接使用mutator方法导致使用了null的数据,所以会引发空指针异常。
所以做了如下更改
这样这个异常被成功解决