import java.util.*;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class recursion 
{
public String getstring()
{
return "this object address is:"+this;
}
public String toString()
{
return super.toString() ;
}
public static void main(String[] args) 
{
recursion re = new recursion();
System.out.println(re.getstring());
}
}//这是thinking in java 的例程,想打印对象的地址不能在toString()函数直接return this会递归
而要调用super.toString();这样还能打印出对象的地址吗?
有没有高手指教具体的原理

解决方案 »

  1.   

    直接return this 会导致  this 再去调用 this 的 toString() 方法,而它的toString()本身又是调用this。
      

  2.   

    在Object类的设计中,toString就是返回对象的地址,所以输出的地址是正确的。如果你的toString()设计成public String toString(){
      return this;
    }这时根本不能通过编译的
      

  3.   

    super.toString();这样还能打印出对象的地址吗?
    可以,从Object类继承下来的toString() 方法本身就可以打印出对象的地址,只不过通常此方法被我们重载罢了
      

  4.   

    public String toString(){
      return this;
    }即使通过了也会是个死循环!!
    就这么简单、!