传递不存在的对象的引用?

时间:2018-11-05 01:06:42

标签: java aggregation

我正在学习聚合,据我了解,当所有者对象被销毁时,被引用对象仍然存在,因为所有者对象仅持有引用,而不是整个对象本身。

public class Line {
    Point begin, end; 

    public Line(Point begin, Point end) {
        this.begin = begin;
        this.end = end;
    }
}

但是如果引用的对象被破坏,那么所有者对象会继续存在吗,没有引用的对象吗?所以我运行下面的代码,这发生了。

Point begin = new Point(1, 2);
System.out.println("begin " + begin.toString());

Line line = new Line(begin, end);
begin=null;
System.out.println("line.begin " +line.begin.toString());


begin object Point@70dea4e
line.begin object Point@70dea4e

但是,如果我在行对象之前将begin设置为null,则仍然使用不存在的引用对象创建行对象,并且在打印语句中得到异常?我很困惑。

begin=null;
Line line = new Line(begin, end);
System.out.println("object created");
System.out.println("line.begin object " + line.begin.toString());

begin object Point@70dea4e
object created
Exception in thread "main" java.lang.NullPointerException
at TestMain.main(TestMain.java:16)

0 个答案:

没有答案