gpt4 book ai didi

java - 具有重写方法的 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 07:52:23 24 4
gpt4 key购买 nike

任何人都可以就解决以下问题的最佳方法发表意见吗?我尝试过 init block 并初始化构造函数中的字段,但在重写的方法尝试清除它之前都没有被调用。

 class TestRunner {
public static void main(String[] args) {
ftw ftw = new ftw();
ftw.dontPanic();
}
}

class wtf {

wtf(){
this.dontPanic();
}

void dontPanic() {
System.out.println("super don't panic");
}
}

class ftw extends wtf {
final HashSet variableOfDoom = new HashSet();

ftw(){
super();
}

void dontPanic() {
super.dontPanic();
System.out.println("sub don't panic");
variableOfDoom.clear(); //This line prints a null pointer exception, because the field hasn't been intialized yet.
}
}

最佳答案

这就是为什么他们建议您不要从构造函数内部调用非final方法。 私有(private)方法也是安全的,因为它们不能被重写。

假设您由于某种原因无法遵循该合理建议,以下是一些可能有帮助的其他观察结果:

  • 我假设您为了示例而进行了简化,但是对 .clear() 的调用并没有真正完成示例中的任何操作;您也许可以将其删除。
  • 在没有看到整个实际程序的情况下很难说,但您可以通过为变量分配新的 HashSet 而不是调用 .clear().

关于java - 具有重写方法的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com