在Java中获取StackOverFlowError

sat*_*esh 4 java stack-overflow

这是我写的程序.我运行时遇到StackOverFlowError异常:

public class maininherit {

   maininherit h = new maininherit() {

        @Override
        public void mai() {
            System.out.print("inner");
        }
    };

    public static void main(String[] args){
       maininherit t=new maininherit();
       t.mai();
    }

    public void mai(){
       System.out.print("hellllll");
       h.mai();
    }
  }
Run Code Online (Sandbox Code Playgroud)

这里我StackOverflowError只是在我使用maininheritclass作为内部类的引用时才得到s .如果我正在使用其他类,我没有收到该错误.任何人都可以向我澄清这个吗?

对不起,我感谢你的答案,但我有一个疑问,我不知道是否合理,只有当我在同一个类的构造函数中创建实例时才能重复初始化.那么如何才能有多个初始化?

Koz*_*łek 9

内部类的实现只是覆盖maininherit类的一部分.所以...你初始化类maininherit然后变量h被初始化.调用了新的运算符然后再次...内部类init maininherit需要设置h变量.

您的代码是初始化h变量的不定循环.