Почему это вызывает исключение нулевого указателя? - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть этот код:

public class Sprite {
    protected float x;
    protected float y;
    protected Image image;
    protected Rectangle boundingBox;

    Sprite(float x, float y, Image image) {
        this.x = x;
        this.y = y;
        this.image = image;
        boundingBox = new Rectangle(x, y, 
            this.image.getWidth(), this.image.getHeight());
    }

...

public Rectangle getBoundingBox() {
    return boundingBox;
}

Однако, когда я вызываю эту функцию в другом классе, когда объект спрайта был определен и инициализирован:

public static boolean collides(Sprite object1, Sprite object2) {
    return object1.getBoundingBox().intersects(object2.getBoundingBox());
}

Я получаю исключение нулевого указателя, указывающее на строку, содержащую это:

this.image.getWidth(), this.image.getHeight());

Почему это?

Ответы [ 3 ]

5 голосов
/ 07 сентября 2011

Проверьте, не является ли изображение нулевым.Скорее всего, это ошибка.

1 голос
/ 07 сентября 2011

где-то вы создаете Sprite и передаете конструктору нулевое изображение.В вашем конструкторе попробуйте сделать что-то вроде этого

if (image == null) throw new Exception("Cannot create Sprite with null image")

0 голосов
/ 07 сентября 2011

Это произойдет, если image будет null. Где-то в вашем коде вы должны делать этот звонок:

new Sprite(aFloat, anotherFloat, aNullValue); // aNullValue == null

Возможно, вы захотите добавить некоторую проверку null в свой конструктор, который выдает RuntimeException. Это позволит легко найти код, который передается в null Image.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...