public class InfiniteRecursion{
public String toString(){
return "InfiniteRecursion"+this+"\n";
}
public static void main(String[] args){
ArrayList al=new ArrayList();
al.add(new InfiniteRecursion());
System.out.println(al);
}
}
問題在于String的自動類型轉換,return "InfiniteRecursion"+this+"\n" 編譯器見String后跟著一個‘+’,‘+’之后的不是String,于是編譯器嘗試將this轉換為String,將調用InfiniteRecursion的toString()方法,從而造成遞歸。
zz thinking in JAVA
public String toString(){
return "InfiniteRecursion"+this+"\n";
}
public static void main(String[] args){
ArrayList al=new ArrayList();
al.add(new InfiniteRecursion());
System.out.println(al);
}
}
問題在于String的自動類型轉換,return "InfiniteRecursion"+this+"\n" 編譯器見String后跟著一個‘+’,‘+’之后的不是String,于是編譯器嘗試將this轉換為String,將調用InfiniteRecursion的toString()方法,從而造成遞歸。
zz thinking in JAVA