点类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