我在创建对象数组时遇到问题,但是java.lang.NullPointerException当我尝试解决它时遇到问题。
java.lang.NullPointerException
这是有问题的课程。
public class Blocks { public static Block[] b = new Block[8]; public Blocks() throws IOException { new Air (b[0]); new Stone(b[1]); new Grass(b[2]); new Dirt (b[3]); }
这是班座。
public class Block { private Texture Texture = null; private int S = World.BLOCK_SIZE; private boolean hasTexture = true; private String texturePath = null; public void setTexture(String path) throws IOException { this.texturePath = path; Texture = TextureLoader.getTexture("PNG", new FileInputStream(new File(path))); } public void draw(int Xa, int Ya) { GL11.glTranslatef(Xa, Ya, 0); //GL11.glRotatef(0, 0, 1, 0); //GL11.glRotatef(0, 1, 0, 0); if(hasTexture) { Texture.bind(); GL11.glBegin(GL11.GL_QUADS); GL11.glColor3f(0.5f, 0.5f, 1); //GL11.glNormal3f(0, 0, 1); GL11.glTexCoord2f(0, 0); GL11.glVertex2f(0, 0); GL11.glTexCoord2f(0, 1); GL11.glVertex2f(0, S); GL11.glTexCoord2f(1, 1); GL11.glVertex2f(S, S); GL11.glTexCoord2f(1, 0); GL11.glVertex2f(S, 0); GL11.glEnd(); } } void hasTexture(boolean b) { this.hasTexture = b; } }
请让我知道是否需要提供更多信息/代码
这样做
public class Blocks { public static Block[] b = new Block[8]; static { // Instantiating the objects present in the array for(int i=0; i<b.length; i++) b[i] = new Block(); } public Blocks() throws IOException { // Now you can access them new Air (b[0]); new Stone(b[1]); new Grass(b[2]); new Dirt (b[3]); }
您忘记实例化数组中存在的对象。所以它提示空指针异常