`

把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构造函数示例(构造方法)

    在`main`方法中,我们只需一行代码`Car c1 = new Car("red", "xxx");`即可创建并初始化`Car`对象,使得代码更加简洁且易于维护。 总结一下,Java构造函数的主要作用有: 1. 初始化对象状态:构造函数允许我们在...

    上机4:类与对象编程.docx

    这个构造方法首先调用无参数的构造方法,然后分别对`num`和`name`进行初始化。这种做法称为构造方法的重载,允许我们根据需要使用不同的参数创建对象。 3. `showInfo()`是一个成员方法,也称为实例方法,因为它属于...

    java编程练习题

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

    【05-面向对象(下)】

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

    JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】

    JavaScript 是一种基于对象的语言,但它并不像传统的面向对象编程语言那样拥有内置的 Class 机制。尽管如此,在实际项目中,JavaScript 的面向对象编程是必不可少的。为了实现类的创建,JavaScript 提供了几种不同的...

    Java语言数据类型类和数组对象PPT教案学习.pptx

    此外,每种数据类型类都有构造方法,允许我们将基本数据类型转换为其对应的类对象,如`new Double(1.2345)`或`new Integer(4567)`。 数据类型类还提供了多种成员方法以支持数据间的转换。例如,`xxxValue()`方法...

    Inetent传递对象parcelable

    然而,当我们需要在Intent中传递复杂的自定义对象时,通常的做法并不像传递基本数据类型(如字符串、整数)那样直接。这时,我们可以利用Parcelable接口来实现对象的序列化和反序列化,以便通过Intent进行传递。本文...

    Java精华(免费版)

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

    C# where泛型约束测试代码

    5. **新操作符约束**:`where T : new()`,确保`T`有公共无参数构造函数,可以在实例化时使用`new`操作符。 6. **特定类型约束**:`where T : U`,`U`是已知类型,表示`T`必须是`U`或`U`的派生类型。 现在,让我们...

    小型简单的记事本程序

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

    zongjiewendang

    静态事件不能在类型声明上使用前缀或后缀,通常会有对应的受保护的OnXxx方法。 【静态类】 静态类是一种特殊的类,不能被实例化。它们仅包含静态成员,不允许有任何实例成员。在C# 2.0及以后版本中引入,主要用于...

    java基础考试题【关于java命名规范的知识】

    选项D正确,接口没有构造方法。 10. GUI组件:选项A和D错误,`Frame`不能被添加到另一个`Frame`或`Applet`中。选项B正确,`Frame`可以添加到`Panel`中。选项C正确,`Panel`可以添加到其他`Panel`。 11. 异常处理:...

    php模拟POST提交的4种方法.pdf

    这种方法虽然不常用,但也能完成POST提交: ```php $post_data = array( 'clientname' =&gt; 'test08', 'clientpasswd' =&gt; 'test08', 'submit' =&gt; 'submit' ); $options = array( 'http' =&gt; array( 'method'...

    java类和对象实验

    本篇内容详细介绍了Java中关于类和对象的基本概念,包括类的不同定义方式、封装性、构造方法以及静态变量的概念和用法。这些知识点对于初学者理解Java面向对象编程的基础非常重要。通过实际的代码示例,可以帮助读者...

    前端大厂最新面试题-typeof_instanceof.docx

    可以看到,上述两种方法都有弊端,并不能满足所有场景的需求。如果需要通用检测数据类型,可以采用 Object.prototype.toString 方法,调用该方法,统一返回格式 “[object Xxx]” 的字符串。 例如: Object....

    socket编程入门

    new Client("xxx.xxx.xxx.xxx", 10000); } catch (IOException e) { e.printStackTrace(); } } } ``` 客户端通过`Socket`构造函数指定服务器的IP地址和端口,然后创建输入/输出流进行数据交换。 #### 3. ...

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

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

    前端大厂最新面试题-this.docx

    特殊情况是,如果`new`构造函数返回了一个对象,那么`this`会指向返回的对象,否则指向实例对象: ```javascript function fn() { this.user = 'xxx'; return {}; // 返回一个对象,this不再指向实例 } var a = ...

    创建JavaScript函数语法.doc

    `arguments`对象在处理不确定数量的参数时非常有用,但请注意,它并不是真正的数组,而是类数组对象。 动态函数创建是利用`Function`构造函数来生成函数的代码。这允许我们在运行时动态定义函数的行为。例如: ```...

Global site tag (gtag.js) - Google Analytics