黑马程序员技术交流社区

标题: 打印集合中对象的内存地址,结果抛出异常? [打印本页]

作者: 程振    时间: 2012-9-23 20:36
标题: 打印集合中对象的内存地址,结果抛出异常?
本帖最后由 程振 于 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. }
复制代码

作者: 尤圣回    时间: 2012-9-23 20:46
for(int i=0;i<10;++i){

                        v.add(new InfiniteRecursion());

                }

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

}

作者: 尤圣回    时间: 2012-9-23 20:54
不对 我测试了一下 可以打印的
作者: 梁志冰    时间: 2012-9-23 21:32
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";
        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2