我在一个类中有这个属性,这也是一个对象。由于某种原因,每当我尝试为它使用构造函数时,它都会给我一个空指针异常。
这是对象的类:
public class Posicion
{
private int filas;
private int columnas;
public void Posicion(int x, int y)
{
filas = x;
columnas = y;
}
}这是将对象作为属性的类:
public class Casillas
{
protected char simbolo;
protected Posicion coordenadas;
public void Casillas(char simbolo, Posicion coordenadas)
{
this.simbolo = simbolo;
this.coordenadas = coordenadas;
}
}这里我得到了Null指针异常( "inicio“方法的第一行):
public class R2D2 extends Casillas
{
public R2D2 inicio(int x, int y)
{
coordenadas.Posicion(x, y);
R2D2 art = new R2D2();
art.Casillas('A', coordenadas);
return art;
}
}我很感激我能得到的所有反馈。
编辑:这是java语言。
发布于 2015-10-01 02:23:01
您正在调用coordenadas.Posicion(x, y);,但是coordenadas从未初始化过,而且,Posicion()是一个构造函数 -为了调用它,您应该使用new关键字:
public class R2D2 extends Casillas
{
public R2D2 inicio(int x, int y)
{
// instead of this:
//coordenadas.Posicion(x, y);
// do:
coordenadas = new Posicion(x, y);
R2D2 art = new R2D2();
art.Casillas('A', coordenadas);
return art;
}
}此外,构造函数不声明返回类型,因此更改:
public void Casillas(...至:
public Casillas(...以及:
public void Posicion(...至:
public Posicion(...另一个错误是:
art.Casillas('A', coordenadas);同样--这不是你应该如何调用构造函数的方式。我建议纠正这个错误--但我不知道你在这里想做什么。
发布于 2015-10-01 02:28:20
您的"Casillas“和"Posicion”构造函数返回void,当您用Java编写构造函数时,没有指定返回类型(它返回指向新构造的对象的指针)。
因为您的构造函数没有正确编写,编译器不知道它们是构造函数,并创建了自己的默认构造函数,它只分配一些内存,并返回指向该内存的指针。因此,"coordenadas“变量从未初始化,并保留其默认值"null”。
https://stackoverflow.com/questions/32878333
复制相似问题