为什么在java中,可以这样定义类的对象?

public class Main extends Activity{
……
final Main main = this;
……
}
这里的Main是定义的一个类,那么在该类中final Main main = this;表示定义了这个类的一个对象,
在类中定义该类的对象,是不是不太正常啊?

Java中this关键字,代表指向当前对象的指针。
楼主给的代码中的final Main main = this; 只是再声明了一个变量指向当前对象,并没有再创建一个当前对象,其实不用final也是可以的,之后在程序中还可以把main指向其他对象。

那为什么main可以指向自己呢?Java中对象创建的顺序是:分配内存,然后初始化。在另一类中创建Main x=new Main()时,首先创建一个Main,创建这个Main时分配内存,分配完内存,这个Main中的this就指向了它自己,然后这个Main进行初始化,即执行final Main main = this; 即声明了另一个变量main同样指向它自己,最后x指向创建出的Main。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-27
很正常呀,表示自身,因为类在 new 之后才会被创建,在创建之前并不知道自己是什么样的。所以想要用到自己的话,比如把自己传出去,就会这么用的。
第2个回答  2013-08-20
这个是可以的,慢慢习惯,你会发现这种方式在很多设计中有特别的用处的。比如,通过静态方法创建类的实例(对象)的时候,就要求类内部在初始化的时候就创建一个自己的对象。
第3个回答  2013-07-27
很正常
就像你在
public static void main(String[] args)
{
Main main = new Main();
}
一样的道理
相似回答