GFV*_*450 1 java attributes constructor object
我在一个类中有这个属性,它也是一个对象.出于某种原因,每当我尝试使用构造函数时,它都会给我一个空指针异常.
这是对象的类:
public class Posicion
{
private int filas;
private int columnas;
public void Posicion(int x, int y)
{
filas = x;
columnas = y;
}
}
Run Code Online (Sandbox Code Playgroud)
这是将对象作为属性的类:
public class Casillas
{
protected char simbolo;
protected Posicion coordenadas;
public void Casillas(char simbolo, Posicion coordenadas)
{
this.simbolo = simbolo;
this.coordenadas = coordenadas;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我得到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;
}
}
Run Code Online (Sandbox Code Playgroud)
我很感激能得到的所有反馈.
编辑:这是java语言.
你正在调用,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;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,构造函数不声明返回类型,因此更改:
public void Casillas(...
Run Code Online (Sandbox Code Playgroud)
至:
public Casillas(...
Run Code Online (Sandbox Code Playgroud)
和:
public void Posicion(...
Run Code Online (Sandbox Code Playgroud)
至:
public Posicion(...
Run Code Online (Sandbox Code Playgroud)
另一个错误是:
art.Casillas('A', coordenadas);
Run Code Online (Sandbox Code Playgroud)
再次 - 这不是你应该如何调用构造函数.我建议修复这个错误 - 但我不确定你在这里做什么.