Я делаю что-то неправильно и не могу понять. У меня есть массив областей текстуры. Я инициализирую массив в конструкторе элементами из другого массива текстурной области в другом классе. Это прекрасно работает.java не может извлекать объекты массива из другого класса
Тогда в моем методе обновления я хочу заменить объекты в массиве различными случайными из массива в другом классе. Это приводит к ошибке с исключением из null указателя. Кто-нибудь может подтолкнуть меня в правильном направлении? Код ниже.
Level1 lvl1 = new Level1();
//initialize local array with objects from array in lvl1
shapes = new TextureRegion[4];
txt1 = new TextureRegion(lvl1.shapes[0]);
txt2 = new TextureRegion(lvl1.shapes[1]);
txt3 = new TextureRegion(lvl1.shapes[2]);
txt4 = new TextureRegion(lvl1.shapes[3]);
shapes[0] = txt1;
shapes[1] = txt2;
shapes[2] = txt3;
shapes[3] = txt4;
Указанные работы. Затем метод обновления:
for (int x = 0; x < 4; x++) {
int rnd = random.nextInt(15);
System.out.println(rnd);
shapes[x] = lvl1.shapes[0];
}
Это генерирует исключение нулевого указателя. Для целей тестирования я просто пытаюсь получить доступ к первому объекту. 0 следует заменить на rnd
.
Было бы полезно указать, в каких методах отображаются фрагменты кода, которые вы разместили, и где вы объявляете все переменные, используемые в этих методах. – Eran
Как писал @Eran - у вас есть проблема с объявлением переменных. Возможно, что вы работаете с переменными в разных областях видимости. Можете ли вы предоставить код, в котором вы создаете эту переменную? Являются ли эти фрагменты кода одной функцией? Является ли это единственной функцией - было бы лучше, если бы вы обеспечивали полное тело функции (без частей, которые не касаются объектов Level1) - необходимо понять структуру тела функции. Если это разные функции - та же опция для тела полного класса. –
'shape [x] = lvl1.shapes [0];' Никогда не делайте этого. Никогда не вызывать какой-либо метод для объекта, не проверяя, является ли этот объект нулевым или нет; в противном случае вы получите исключение смертельного исхода - вот его исключение с нулевым указателем. В вашем случае 'lvl1' равно null. Читайте о 'stack',' local variables' в Java – spiderman