Проблема с доступом к переменным до их определения - PullRequest
1 голос
/ 07 сентября 2011

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

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 никогда не используется сам по себе, он используется только как суперкласс.

Единственный способ определить изображение - через конструктор:

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

Ответы [ 3 ]

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

Возможно, потому что переменная image никогда не инициализируется. Следовательно, image.getWidth() и image.getHeight() завершатся с ошибкой NullPointerException с. Либо инициализируйте переменную. Или передайте image или проверьте на null, прежде чем пытаться его использовать.

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

Вы получаете NullPointerException, потому что image не был инициализирован.

РЕДАКТИРОВАТЬ:

Спрайт класса никогда не используетсясам по себе, используется только как суперкласс.Единственный способ определить изображение - через конструктор:

Я не уверен, что понимаю ваше отвращение к использованию конструктора.Если Sprite используется в качестве суперкласса, то он используется точно так же, как если бы он использовался сам по себе - поэтому он должен быть полностью выпечен.

2 голосов
/ 07 сентября 2011
protected Image image;

необходимо инициализировать, если вы хотите получить его ширину и высоту.

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