A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵中国 中级黑马   /  2012-3-29 13:31  /  2478 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class InfiniteRecursion{
        public String toString(){
                return"InfiniteRecursion address:" + this + "/n";
        }
        public static void main(String[] args){
                List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                for(int i=0;i<10;i++)
                v.add(new InfiniteRecursion());
                System.out.println(v);
        }
}
运行出错

6 个回复

倒序浏览
本帖最后由 马云 于 2012-3-29 13:36 编辑

我回答:
+this
这句话错了,
this代表的是一个对象,不知道你加this是想达到什么效果!
你也算是高手了,我还没见过在字符串里写this+的
回复 使用道具 举报
import java.util.*;
public class InfiniteRecursion{
         public String InfiniteRecursion(){
                 return"InfiniteRecursion address:" + this + "/n";
         }
         public static void main(String[] args){
                 List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                 for(int i=0;i<10;i++)
                 v.add(new InfiniteRecursion());
                 System.out.println(v);
         }
}
回复 使用道具 举报
我认为这样可以,把你的tostring   函数,改成构造函数
回复 使用道具 举报
this 就表示你的tostring 重复了
回复 使用道具 举报
打印地址值可以这样写:
import java.util.*;
public class InfiniteRecursion{
        
        public static void main(String[] args){
                List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                for(int i=0;i<10;i++)
                v.add(new InfiniteRecursion());
                System.out.println("InfiniteRecursion address:"+v+ "/n");
                               
        }
}
回复 使用道具 举报
感谢楼上
已找到答案,要打印地址的话,应该用super。String中“+”后面
调用的是this的toString方法,这样就出现了递归调用的场面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马