我有一个Java程序,运行良好。然而,今天,虽然程序中没有错误,但我得到了以下消息:
Exception in thread "main" java.lang.NullPointerException
at geometrycalculator.planeFigurePerimeter.rectangle(planeFigurePerimeter.java:12)
at geometrycalculator.GeometryCalculator.main(GeometryCalculator.java:50)
C:UsersgustavoAppDataLocalNetBeansCache8.2executor-snippetsrun.xml:53: Java returned: 1
BUILD FAILED (total time: 8 seconds)
因此,在儿童班的第12行,我有:
calculator.setPerimeter((length + width) * 2);
在主程序的第50行,我有:
perimeter.rectangle();
关于父类我有:
public void setPerimeter(double newPerimeter){
perimeter = newPerimeter;
}
public double getPerimeter(){
return perimeter;
}
由于某些原因,计算未在calculator.setPerimeter((length + width) * 2);
中执行
父类是抽象的,子类从父类扩展而来,这样我就不必在所有其他子类上创建相同的变量。
获取NPE的唯一可能性是,您的calculator
对象引用可能尚未初始化/null
。
在调用setPerimeter
方法之前,检查它是否已正确初始化
calculator.setPerimeter((length + width) * 2);
好的,所以我遇到的问题是因为我将父类作为抽象类,无法直接访问setter和getter。我将父类更改为公共类,而不是抽象类,现在它可以工作了。欢迎任何关于我是否应该将父类从公共类更改为私人类和/或将其抽象化的建议。我愿意扩展我的Java知识。