把new xxx()付给构造方法并不总是有效的

把new xxx()交给构造方法并不总是有效的

今天遇到一个错误,空指针。半天没找出问题。后来找到了。大部分的bug都是一些小错误,只是你不容易发现它。

我在类中的构造方法中new了Service方法,为了方便。

 

public PagingListTrainingCourseClassModel(int itemStartNumber, int pageSize, TrainingCourseClassQueryVO queryVO) {

super(itemStartNumber, pageSize, queryVO);

trainingCourseClassServiceImpl = new TrainingCourseClassServiceImpl();

}

然后在用到这个Service的地方就不用再次new了。这是我的想法。

 

然后我在下面这个方法用用了这个trainingCourseClassServiceImpl对象。

protected List<TrainingCourseClassVO> getPageData(int itemStartNumber, int pageSize){

...

 

result=trainingCourseClassServiceImpl.findAllClass((TrainingCourseClassQueryVO)getQueryVO(), start, pageSize);

....

}

报异常说是NullPointerException,然后我就查参数,都是正确非NULL的。思考了一会儿,查了一下这个trainingCourseClassServiceImpl居然还是NULL。然后就想到,哦,可能是super(itemStartNumber, pageSize, queryVO);用到了这个protected List<TrainingCourseClassVO> getPageData(int itemStartNumber, int pageSize)。

当super类调用到这个方法的时候,方法中的Service还没有实例化,因为在构造方法中它是在super方法之后的。

唉,还需要对框架熟悉一些才好。但蛋疼的zk。搞半天。