我有4节课。一个是抽象实体类,一个是球类,一个是主类,另一个是屏幕类。

球类扩展了实体类,并具有5​​个变量。

屏幕功能具有绘制方法:

public void paint(Graphics g){
    super.paint(g);
    ball.paint(g);
}


当然,要使用ball.paint,需要为其创建一个对象。因此,我将球对象:

Ball ball;


然后将其添加到屏幕构造函数中,因为我需要这样做(Ball有一个接受5个变量的构造函数):

public Screen(){
    ball = new Ball(ball.getWeight(), ball.getWidth(), ball.getHeight(), ball.getX(), ball.getX());
}


这没有任何错误,但是当我运行程序时,我在控制台中收到此错误:

Exception in thread "main" java.lang.NullPointerException
at h3x.engine.gfx.Screen.<init>(Screen.java:18)
at h3x.engine.Main.main(Main.java:16)


主类的第16行是这样的:

frame.add(new Screen());


...屏幕类的第18行是这样的:

ball = new Ball(ball.getWeight(), ball.getWidth(), ball.getHeight(), ball.getX(), ball.getX());


所以我的问题是,为什么会这样,我该如何解决。如果需要,我可以将整个代码放在类中。

谢谢!

最佳答案

您致电:

ball = new Ball(ball.getXxx()....)


这意味着您希望从初始化的实例中检索值。在初始化完成之前,它为null。因此是NPE(NullPointerException的缩写)。

10-07 20:37