我有这个:
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;
}
答案 0 :(得分:9)
可能因为变量image
从未初始化。因此,image.getWidth()
和image.getHeight()
会因NullPointerException
而失败。初始化变量。或者在尝试使用image
之前传入null
或检查{{1}}。
答案 1 :(得分:4)
您收到NullPointerException
因为image
尚未初始化。
编辑:
类精灵从不单独使用,仅用作超类。 定义图像的唯一方法是通过构造函数:
我不确定我是否理解您对使用构造函数的厌恶。如果Sprite
被用作超类,那么它的使用方式与它自己使用的一样多 - 所以它需要完全烘焙。
答案 2 :(得分:2)
protected Image image;
如果你想获得它的宽度和高度,需要初始化。