`

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

    博客分类:
  • java
 
阅读更多

今天遇到一个错误,空指针。半天没找出问题。后来找到了。大部分的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。搞半天。

 

0
1
分享到:
评论

相关推荐

    java编程练习题

    4,写一个类Fish,继承自Animal类,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该类还要求覆盖Animal类中的无参move()方法,要求输出:XXX Swimming!! 5,写一个类Bird,继承自Animal类,并...

    【05-面向对象(下)】

    •如果把一个内部类放在方法里定义,这就是局部内部类,仅仅在这个方法里有效。 •局部内部类不能在外部类以外的地方使用,那么局部内部类也不能使用访问控制符和static修饰 匿名内部类 •匿名内部类适合...

    Java精华(免费版)

    1、构造方法: String(byte[] byte,int offset,int length);这个在上面已经用到。 2、equalsIgnoreCase:忽略大小写的比较,上例中如果您输入的是BYE,则不会退出,因为大小写不同,但是如果使用这个方法,则会退出。 ...

    小型简单的记事本程序

    this.addWindowListener(new xxx(this)); }///构造函数结束/// ////////////////事件处理///////////////////////////////////// public void actionPerformed(ActionEvent p){ if(p.getActionCommand()==...

    二十三种设计模式【PDF版】

    (我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?) 因此,首先你必须掌握 GoF 的设计模式。虽然它是隐性,但不是可以越过的。 关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的...

    java面试800题

    Q0058 一个Java抽象类声明了一个方法并会抛出一个异常,问继承这个抽象类的子类,实现了这个方法,这个方法声明是不是一定要抛出一模一样的异常,可不可以不抛,或者抛出的异常比抽象类的异常范围大,或者小?...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1....

    正则表达式

    \ XXX 由十进制数 XXX 指 定的ASCII码字符 \ Xnn 由十六进制数 nn 指定的ASCII码字符 \ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n ___________________________________________________ 如果想在正则...

    最新Java面试宝典pdf版

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和...

    Java面试笔试资料大全

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和...

    文件转换引擎PantoJS.zip

    以上代码构建的拓扑图如下:流以一个转换器为构造参数,但也可以不传入任何参数。new Stream(new Transformer())通过定义拓扑流和转换器,可以简洁和清晰地描述如何构建一个项目。下面是一个复杂的构建流程示例:...

    Java面试宝典2010版

    8、用最有效率的方法算出2乘以8等於几? 9、请设计一个一百亿的计算器 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11、"=="和equals方法究竟有什么区别? 12、静态变量和实例变量...

    HGE_系列教材(1-9)

    如果我们需要在程序中显示一个气球,这个气球的颜色不断变化,这时候我们并不需要准备 多张不同颜色的气球纹理,而只需要一张白色的气球纹理,设置blend 为BLEND_COL ORMUL,白色的R,G,B 值被表示成1.0,也就是说,...

    JAVA面试宝典2010

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和...

    Java面试宝典-经典

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和...

    java面试题大全(2012版)

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和...

    java面试宝典2012

    8、用最有效率的方法算出2乘以8等於几? 10 9、请设计一个一百亿的计算器 10 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 12 12、静态变量和...

    Java面试宝典2012版

    8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量...

Global site tag (gtag.js) - Google Analytics