我知道这样做没有意义:我只是觉得有趣,想更多地了解当您创建一个继承自自身的类时会发生什么机制,导致堆栈溢出崩溃。令人惊奇的是,Java允许您首先创建这样的构造。
我只是猜测,JVM是否将自身置于无限循环中,尝试在实例化之前解析该类,还是实际上不断实例化多个类的副本?
我应该更具体地说明一下;我正在使用内部类从封闭类派生。
public class Outside {
private int outsideValue;
public class Inside extends Outside {
private int insideValue;
public Inside(int val) {
insideValue = val;
}
}
public Outside() {
Inside o = new Inside(0);
}
}
public class Main {
public static void main(String args[]) {
Outside o = new Outside();
}
}
javac
不是创建类文件的唯一方法。您也可以编辑一个来获取虚假类。 - vbenceObject
,那么Object
扩展了什么? ;) - Peter Lawrey