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