ChipoDeil
@ChipoDeil
Школьник, пытающийся кодить.

Как правильно создать массив объектов в java?

Имеется код:
@Override
        public void run() {
            sprite = new Sprite(this, man);
            for(int i = 0; i < colvo; i++){
                meteor[i] = new Meteor(this, meteorit);
            }
            while(update){
                if(!holder.getSurface().isValid()) {
                    continue;
                }
                Canvas c = holder.lockCanvas();
                onMyDraw(c);
                holder.unlockCanvasAndPost(c);
            }
        }


С классом Meteor всё отлично, если я буду например создавать экземпляры класса по отдельности, всё будет отлично работать, но как только я пытаюсь сделать все по-человечески и засунуть экземпляры в массив, вылетает NullPointerException , который указывает конкретно на эту строку:

meteor[i] = new Meteor(this, meteorit);

Стоит так же упомянуть, что всё это происходит внутри класса
public class MySurfaceView extends SurfaceView implements Runnable{...}


Который, в свою очередь, находится внутри класса

public class MainActivity extends Activity implements View.OnTouchListener{...}


Кароче говоря, у меня не получается создать вроде бы нормальный массив объектов, а по отдельности создавать экземпляры класса у меня выходит.

Заранее очень благодарен за помощь, я в ступоре.
  • Вопрос задан
  • 2603 просмотра
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos
Если бы еще видеть как объявлен meteor... Скорее всего вы ему (массиву) не сделали new.
А еще можно юзать ArrayList.
Ответ написан
compilator
@compilator
Senior Data Engineer
Никто не использует массивы напрямую, ну только если в каких-то экзотических случаях. Используйте коллекции. Вам вполне подойдет ArrayList.
Ответ написан
Комментировать
@guras256
проблема очевидна - массив meteor равен null

и не очень понятно, зачем именно массив
почему бы не сделать например так :
List<Meteor> meteors = 
    Stream.generate(() -> new Meteor(this, meteorit))
        .limit(colvo)
        .collect(Collectors.toList())
Ответ написан
@private_tm
JAVA dev
Object[] arrayObject = {new Object(), new Object()};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 21:55
200000 руб./за проект
24 нояб. 2024, в 21:41
1000 руб./за проект
24 нояб. 2024, в 21:19
35000 руб./за проект