点类java空指针异常
错误:我在第二个代码中得到一个空指针异常。但是,当我尝试在构造函数中分配传递的对象时,它可以正常工作。在第一个示例(有效)中,您正在将一个现有对象(通过点类java空指针异常,java,pointers,exception,null,Java,Pointers,Exception,Null,错误:我在第二个代码中得到一个空指针异常。但是,当我尝试在构造函数中分配传递的对象时,它可以正常工作。在第一个示例(有效)中,您正在将一个现有对象(通过点参数x传入)分配到ob字段 在第二个示例中,您试图访问ob的属性,以便为其赋值,但是ob从未被赋值到任何地方-它是null,因此出现异常。 class Cell { Point ob ; int distance; public Cell(Point x, int i) { try {
点参数x
传入)分配到ob
字段
在第二个示例中,您试图访问ob
的属性,以便为其赋值,但是ob
从未被赋值到任何地方-它是null
,因此出现异常。
class Cell {
Point ob ;
int distance;
public Cell(Point x, int i) {
try {
ob = x;// works fine
distance = i;
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
}
class Cell {
Point ob ;
int distance;
public Cell(Point x, int i) {
try {
ob.x = x.x; // throws null pointer exception
ob.y = x.y;
distance = i;
} catch (Exception e) {
System.out.println(e.getStackTrace());
}
}
}
意味着获取ob
对象的x
变量,首先需要创建点的实例并将其分配给ob
ob.x = x.x;
将解决您的问题。在实例化它之前,您会调用它的成员
ob = new Point();
在这里,您只需分配变量,但不尝试使用它
ob = x;// works fine
这里您尝试设置ob
的成员的值,它是点的一个实例。但是,您还没有实例化该变量,这意味着它实际上是空的
因此,要么先实例化它,要么尝试访问作为参数传递的x
实例的x
变量。能否包含实例化单元格的代码?
ob.x = x.x; // throws null pointer exception