Я пишу обработчик аппроксимации в Java с помощью Eclipse. Я получаю исключение нулевого указателя, когда я реорганизую метод для создания ArrayList из PGraphics из основного класса в отдельный класс. Метод, написанный в основном классе, работает (первый пример кода ниже), это не работает рефактор (вторая пара образцов кода). Я искал для всего ответа (некоторые похожие, но не совпадающие) и сделал много перезаписи, но не кубиков. Посмотрите, и вид спасибо заранее за вашу помощь:Исключение нулевого указателя при реорганизации создания ArrayList из PGraphics из основного класса в отдельный класс
Этот код (все в одном классе) работает:
package tester;
import java.util.ArrayList;
import processing.core.*;
public class GraphicsMain extends PApplet{
int screenWidth = 800;
int screenHeight = 500;
String filepath = "https://stackoverflow.com/a/filepath/here/";
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
int stageWidth = 100; // eventually make this based on the motif's max width
int stageHeight = 400; // make this based on the motif's max height
PImage pic = loadImage(filepath + "small_jones6.png");
PImage pic2 = loadImage(filepath + "small_dresser10.png");
public void setup() {
size(screenWidth,screenHeight,P3D);
background(255);
for (int i = 0; i < 2; i++) {
motifArray.add(createGraphics(stageWidth,stageHeight,P3D));
motifArray.get(i).beginDraw();
motifArray.get(i).image(pic,10,10,100,90);
motifArray.get(i).image(pic2,10,50,50,50);
motifArray.get(i).endDraw();
}
if (motifArray.get(0) == null) {
System.out.println("The motif array is unfilled!");
}
}
public void draw() {
for (int i = 0; i < motifArray.size(); i ++) {
image(motifArray.get(i),200+(400*i),100);
}
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "GraphicsMain" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
Этот код ниже (переработан в двух отдельных классов) не делает:
** я отметил две строки [по одному в каждом классе] идентифицированный в исключения нулевого указателя
класс 1:
package tester;
import java.util.ArrayList;
import processing.core.*;
public class GraphicsMain extends PApplet{
int screenWidth = 800;
int screenHeight = 500;
PGraphicsMaker pgm = new PGraphicsMaker(this);
ArrayList<PGraphics> motifArray;
public void setup() {
size(screenWidth,screenHeight,P3D);
background(255);
motifArray = pgm.makeMotifArray(); // ** NULL POINTER EXCEPTION HERE **
if (motifArray.get(0) == null) {
System.out.println("The motif array is unfilled!");
}
}
public void draw() {
for (int i = 0; i < motifArray.size(); i ++) {
image(motifArray.get(i),200+(400*i),100);
}
}
static public void main(String[] passedArgs) {
String[] appletArgs = new String[] { "GraphicsMain" };
if (passedArgs != null) {
PApplet.main(concat(appletArgs, passedArgs));
} else {
PApplet.main(appletArgs);
}
}
}
Класс 2:
package tester;
import java.util.ArrayList;
import processing.core.PApplet;
import processing.core.PGraphics;
import processing.core.PImage;
import processing.core.*;
public class PGraphicsMaker {
String filepath = "https://stackoverflow.com/a/filepath/here/";
PApplet parent;
int stageWidth = 100; // eventually make this based on the motif's max width
int stageHeight = 400; // make this based on the motif's max height
ArrayList<PGraphics> motifArray;
PImage pic;
PImage pic2;
public PGraphicsMaker(PApplet pa) {
PApplet parent = pa;
pic = parent.loadImage(filepath + "small_jones6.png");
pic2 = parent.loadImage(filepath + "small_dresser10.png");
}
public ArrayList makeMotifArray() {
ArrayList<PGraphics> motifArray = new ArrayList<PGraphics>();
for (int i = 0; i < 2; i++) {
// ** NULL POINTER EXCEPTION on the line below **
motifArray.add(parent.createGraphics(stageWidth,stageHeight,parent.P3D));
motifArray.get(i).beginDraw();
motifArray.get(i).image(pic,10,10,100,90);
motifArray.get(i).image(pic2,10,50,50,50);
motifArray.get(i).endDraw();
}
return motifArray;
}
}
Любая помощь будет сказочным. Благодаря!
Спасибо --- простая ошибка, которая ускользала от меня в течение нескольких часов! – gromiczek