在定义变量之前访问变量的问题

时间:2011-09-06 20:41:14

标签: java initialization

我有这个:

public class Sprite

{
    protected float x;
    protected float y;
    protected Image image;
    protected Rectangle boundingBox;


    public Rectangle getBoundingBox()
    {
         boundingBox = new Rectangle(x, y,
                    image.getWidth(), image.getHeight());
        return boundingBox;
    }

然而,当我运行它时,我得到一个空指针异常。类精灵从不单独使用,仅用作超类。

定义图像的唯一方法是通过构造函数:

Sprite(float x, float y, Image image) {
    this.x = x;
    this.y = y;
    this.image = image;
}

3 个答案:

答案 0 :(得分:9)

可能因为变量image从未初始化。因此,image.getWidth()image.getHeight()会因NullPointerException而失败。初始化变量。或者在尝试使用image之前传入null或检查{{1}}。

答案 1 :(得分:4)

您收到NullPointerException因为image尚未初始化。

编辑:

  

类精灵从不单独使用,仅用作超类。   定义图像的唯一方法是通过构造函数:

我不确定我是否理解您对使用构造函数的厌恶。如果Sprite被用作超类,那么它的使用方式与它自己使用的一样多 - 所以它需要完全烘焙。

答案 2 :(得分:2)

protected Image image;
如果你想获得它的宽度和高度,需要初始化