我是Java和OOP的新手,这是我的问题。当我运行以下代码时,我得到了
线程“主”中的异常java.lang.StackOverflowError。
问题出在我创建对象的代码中JavaApplication1
。class不会发生问题App2
。如果ja
在run方法内部创建对象,则代码可以正常工作。你能解释一下为什么吗?
package javaapplication1;
public class JavaApplication1 {
int i, k, j;
class App2 {
int i = 23;
int j = 12;
}
App2 a2 = new App2();
JavaApplication1 ja = new JavaApplication1();
public void run() {
ja.i = 10;
a2.i = 26;
a2.j = 18;
System.out.println(i + "," + j + "'" + ja.i + "'"
+ a2.i + "'" + a2.j + "'" + k);
}
public static void main(String[] args) {
int k = 24;
JavaApplication1 ja1 = new JavaApplication1();
ja1.run();
ja1.i = 18;
System.out.println(ja1.i + "'" + "'" + k);
}
}
您的类的JavaApplication1
字段JavaApplication1 ja
包含JavaApplication1
类的另一个实例,也有自己的ja
字段,包含的另一个实例JavaApplication1
,依此类推。
换句话说,当您创建JavaApplication1
该实例的实例时,将创建其内部实例,JavaApplication1
并且此内部实例将创建另一个JavaApplication1
实例,该实例再次创建实例JavaApplication1
…,直到堆栈已满。
因此,当您在main方法中运行此代码时
JavaApplication1 ja1 = new JavaApplication1();
这样的事情发生
+-----------------------------------------------+
ja1 -> | JavaApplication1 instance |
+-----------------------------------------------+
| |
| +------------------------------------+ |
| ja -> | JavaApplication1 instance | |
| +------------------------------------+ |
| | | |
| | +-------------------------+ | |
| | ja -> |JavaApplication1 instance| | |
| | +-------------------------| | |
| | | | | |
| | | ja -> .... | | |
| | +-------------------------+ | |
| +------------------------------------+ |
+-----------------------------------------------+
无论如何,我看不到ja
字段的使用位置,因此请考虑将其从代码中删除。
最近我正在学习Spring框架。所以我正在尝试检查依赖注入在Spring框架中的工作原理。因此,我创建了一个新的java项目并使用基于构造函数XML的配置练习依赖注入代码。运行我的项目后,我收到了这个错误...... 类路径资源[com/mir00r/beans.XML]的XML文档中的第24行无效;嵌套异常为组织。xml。萨克斯。SAXParseException;行号:24;列数:9;cvc复
我正在学习selenium并尝试运行以下代码,但它引发了异常。NoSuchFieldError:空字节数组。请帮助我理解这个简单的程序出了什么问题。 控制台: 异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY
我在Windows 10上使用Netbean上的JDK 14。在IDE环境中一切正常。但是,当我尝试从命令提示符编译和运行源文件时,我得到了。 系统变量中的PATH和CLASSPATH包含,。 如果我从命令提示符发出java-version,在java_主目录中,我会得到以下结果: 如果我从java_HOME\bin目录发布java-version,我会收到下面列出的另一条消息: 我不确定为什么?
好的,我正在使用eclipse-neon-Client-combined-3.1.0-nodeps。firefox安装程序39.0的jar 这是我的代码 这就是错误 线程“main”java中出现异常。lang.NoClassDefFoundError:com/google/common/base/Function at T1。main(T1.java:12)由:java引起。lang.Class
问题内容: 每当我运行此命令时,该函数就可以正常使用。当我选择洞穴时,消息会每隔2秒弹出一次,然后当它越过该部分时,就会出现错误: 我已经尝试过和,并且在该方法中使用时,出现了很多错误。当我在方法中使用时,它不接受我的输入。 当我在该方法中使用时,它不接受我的字符串输入,而直接进入另一个游戏,但是布尔值返回并且它无限地发送垃圾邮件“ Which Cave …”。 我已经阅读了错误报告,以及类似问题