Java 嵌套类,内部类
我在构造函数之后创建了一个对象d,然后在main方法中创建了另一个对象f。我需要理解为什么Java 嵌套类,内部类,java,class,constructor,call,Java,Class,Constructor,Call,我在构造函数之后创建了一个对象d,然后在main方法中创建了另一个对象f。我需要理解为什么输出会给出异常(线程“main”java.lang.StackOverflower中的异常)。但是,如果我不在构造函数之后创建对象d,程序将成功运行 public class OuterTwo { public OuterTwo() { System.out.println("OUTER!"); } OuterTwo d = new OuterTwo(); publ
输出
会给出异常(线程“main”java.lang.StackOverflower中的异常
)。但是,如果我不在构造函数之后创建对象d,程序将成功运行
public class OuterTwo {
public OuterTwo() {
System.out.println("OUTER!");
}
OuterTwo d = new OuterTwo();
public static void main(String[] args) {
OuterTwo f = new OuterTwo();
}
}
因为您的类被定义为具有此字段
OuterTwo d = new OuterTwo();
这相当于
OuterTwo d;
public OuterTwo() {
d = new OuterTwo(); // <-- this is infinite recursion.
System.out.println("OUTER!");
}
public class OuterTwo {
public OuterTwo() {
d =new OuterTwo();
System.out.println("OUTER!");
}
OuterTwo d;
public static void main(String[] args) {
OuterTwo f = new OuterTwo();
}
}
outertwod;
公共外线wo(){
d=newoutertwo();//您的代码相当于
OuterTwo d;
public OuterTwo() {
d = new OuterTwo(); // <-- this is infinite recursion.
System.out.println("OUTER!");
}
public class OuterTwo {
public OuterTwo() {
d =new OuterTwo();
System.out.println("OUTER!");
}
OuterTwo d;
public static void main(String[] args) {
OuterTwo f = new OuterTwo();
}
}
这导致了无限递归。您遇到堆栈溢出。这是可以理解的。
您的OuterTwo类实例化类型为OuterTwo的成员。
您有一个无限的构造函数调用来创建OuterTwo对象,该对象保存对OuterTwo对象的引用,并在..上重复。您在这里犯了一个小错误。请使用类似的方法
public class OuterTwo {
OuterTwo d;
public OuterTwo() {
d =new OuterTwo();
System.out.println("OUTER!");
}
public static void main(String[] args) {
OuterTwo f = new OuterTwo();
}
}
为了更好地理解内部
和嵌套
类,请访问以下链接
而且我还将感谢您提供一份关于JAVA中嵌套类的编写精良、解释精良的教程。我在这里没有看到任何嵌套类。这是一个无限递归。