Java自己调用自己,java类调用自己

文章标签: java
2016-3-30 15:13:20     395 人阅读    

Java代码  
  1. class Test2  
  2. {  
  3.     private Test2 a;  
  4.     //private static Test2 a=new Test2();  
  5.     public static void main(String[] args)  
  6.    {  
  7.         Test2 t = new Test2();   
  8.     }  
  9.  public Test2 getA() {  
  10.   return a;  
  11.  }  
  12.  public void setA(Test2 a) {  
  13.   this.a = a;  
  14.  }  
  15.   
  16. }  

  第一种情况,自己调用自己,并迭代;但没有new出新对象,正常

Java代码  
  1. class Test3  
  2. {  
  3.     private Test3 a=new Test3();  
  4.     //private static Test3 a=new Test3();  
  5.     public static void main(String[] args)  
  6.    {  
  7.         Test3 t = new Test3();   
  8.     }  
  9.  public Test3 getA() {  
  10.   return a;  
  11.  }  
  12.  public void setA(Test3 a) {  
  13.   this.a = a;  
  14.  }  
  15.   
  16. }   

 第而种情况,自己调用自己,并迭代,生成新的对象;
结果 Exception in thread "main" java.lang.StackOverflowError;

Java代码  
  1. class Test4  
  2. {  
  3.     private static Test4 a=new Test4();  
  4.     public static void main(String[] args)  
  5.    {  
  6.         Test4 t = new Test4();  
  7.         System.out.println(t.getA());  
  8.         System.out.println(t.getA().getA());  
  9.         System.out.println(t.getA().getA().getA());  
  10.     }  
  11.     public Test4 getA() {  
  12.         return a;  
  13.     }  
  14.     public void setA(Test4 a) {  
  15.         this.a = a;  
  16.     }  
  17.   
  18. }   

 

第三种情况,没有报错,因为生成了静态对象,结果

com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a

 

总结:static关键字,只保留自己唯独一份的变量;而且对自身的引用始终是自己;

 


原文地址:http://www.itmmd.com/201603/781.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

  上一篇
下一篇  java开源爬虫gecco 发布1.0.8版本

精彩回复
#1楼    ; [评论人]:帅得烦燥   [发表时间]:2017-6-8 13:45:41

很好,总结的很到位。

#1楼    ; [评论人]:111   [发表时间]:2017-3-22 16:48:10

23233

#1楼    ; [评论人]:1   [发表时间]:2016-10-30 18:13:10

1

发表评论
姓名: