【发布时间】:2013-03-21 15:56:22
【问题描述】:
class A
{
B b;
public A()
{
b = new B(this);
//initialization of class A variables
}
public void meth1()
{
}
}
class B
{
A a;
public B(A a)
{
this.a = a;
}
}
我知道这个引用不应该以这种方式传递,但是如果这样做会发生什么
其他一些类调用类 A 构造函数。 “this”引用何时实际分配内存?在调用 super() 之前,是否会在调用 A 的构造函数时立即为其分配内存。
假设 B 类是一个线程,并且由于 B 具有 A 的引用,如果“this”引用尚未分配内存,B 可以在 A 的构造函数甚至不返回之前调用 A 上的方法。
【问题讨论】:
-
我知道这个引用不应该这样传递可以像你一样传递。
-
我知道这个引用不应该这样传递为什么不呢?
-
我的意思是这不是一个好习惯
-
为什么?您在哪里读到它,反对使用它的论据是什么?
-
@brimborium 如果要操纵对象,我同意你的看法,但在他的示例中,他只是将其分配给实例变量,所以没什么大不了的。
标签: java