java - 在 Java 中获取 StackOverFlowError

标签 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();
    }
  }

只有当我在内部类中使用 maininherit 类作为引用时,我才会收到 StackOverflowError。如果我使用其他类,我不会收到该错误。谁能给我澄清一下?

抱歉,我非常感谢你的回答,但我怀疑我不知道是否合理,只有当我在同一个类的构造函数中创建实例时,才可能重复初始化。然后怎么可能有多个初始化?

最佳答案

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

您的代码是初始化 h 变量的无限循环。

关于java - 在 Java 中获取 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115704/

相关文章:

java - 使用二进制搜索插入有序数组

java - 静态 block 不适用于 Spring 中的@Value

c# - 追踪我的 LINQ 查询中的堆栈溢出错误

java - JProfiler 可以测量堆栈深度吗?

c++ - 在 std::map 中搜索时堆栈溢出

c# - Windows 窗体 : StackOverflowException

java - 在android中解析json数组

java - 正则表达式匹配括号内的数值

java - 错误 : java. lang.IllegalStateException:没有注册 'XmlToolsFactory' 的实例

c - 堆栈溢出 : Have no idea what modify the last one byte of the overwritten return address