常用:addElement()、elementAt()、elements() 獲取 Enumeration。其他實用方法請查閱電子文檔。
public class CrashJava {
public String toString() {
return "CrashJava address: " + this + "\n"; // this 觸發遞迴 toString()
}
public static void main(String[] args) {
Vector v = new Vector();
for (int i=0; i<10; i++) v.addElement(new CrashJava());
System.out.println(v); // Vector.toString() 遍歷調用元素 toString() → 無限遞迴 → 棧溢出 → JVM 崩潰
}
}
原因:"string" + this 觸發自動轉型調用 toString(),形成無限遞迴。Vector 遍歷元素調用 toString() 導致棧溢出,異常機制無法捕獲,直接崩潰 JVM (1.1 驗證)。
public String toString() {
return "CrashJava address: " + super.toString() + "\n"; // 調用 Object 原始 toString() 獲取地址
}
前提:直接繼承 Object 或父類未覆寫 toString()。