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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 程振 于 2012-9-23 22:01 编辑
  1. import java.util.ArrayList;
  2. import java.util.List;


  3. // problem from  Think in Java Fourth Edition.
  4. // about unintended recursion
  5. //
  6. // just repace one line can fixed it
  7. public class InfiniteRecursion {
  8.         @Override
  9.         public String toString() {
  10.                 // tip: this is the source of the problem
  11.                 return "InfiniteRecursion address: " + this +"\n";
  12.         }
  13.         
  14.         // main method is correct, no need fix
  15.         public static void main(String[] args) {
  16.                 List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
  17.                 for(int i=0;i<10;++i){
  18.                         v.add(new InfiniteRecursion());
  19.                 }
  20.                 System.out.println(v);
  21.         }
  22.         
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
for(int i=0;i<10;++i){

                        v.add(new InfiniteRecursion());

                }

                System.out.println(v);    你这个打印写在外面 虚拟机根本不知道你要打印哪个 更多报错

}

评分

参与人数 1黑马币 +20 收起 理由
admin + 20 25了,给你加金钱了,

查看全部评分

回复 使用道具 举报
不对 我测试了一下 可以打印的
回复 使用道具 举报
public String toString() {
                // tip: this is the source of the problem
                return "InfiniteRecursion address: " + this +"\n";
        }
这里的this不能直接这样用,this代表的本类对象的引用。这里的this不能代表任何对象

public String toString() {
               //  tip: this is the source of the problem
                return "InfiniteRecursion address: " + Integer.toHexString(hashCode())+"\n";
        }

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
王德升 + 1 赞一个!
程振 + 3 赞一个!不过 直接调用super.toString()更好.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马