Java有趣的自己调用自己
class Test2
{
private Test2 a;
//private static Test2 a=new Test2();
public static void main(String[] args)
{
Test2 t = new Test2();
}
public Test2 getA() {
return a;
}
public void setA(Test2 a) {
this.a = a;
}
}
第一种情况,自己调用自己,并迭代;但没有new出新对象,正常
class Test3
{
private Test3 a=new Test3();
//private static Test3 a=new Test3();
public static void main(String[] args)
{
Test3 t = new Test3();
}
public Test3 getA() {
return a;
}
public void setA(Test3 a) {
this.a = a;
}
}
第而种情况,自己调用自己,并迭代,生成新的对象;
结果 Exception in thread "main" java.lang.StackOverflowError;
class Test4
{
private static Test4 a=new Test4();
public static void main(String[] args)
{
Test4 t = new Test4();
System.out.println(t.getA());
System.out.println(t.getA().getA());
System.out.println(t.getA().getA().getA());
}
public Test4 getA() {
return a;
}
public void setA(Test4 a) {
this.a = a;
}
}
第三种情况,没有报错,因为生成了静态对象,结果
com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a
总结:static关键字,只保留自己唯独一份的变量;而且对自身的引用始终是自己;