我的第一个代码块是我的项目对象文件;第二个是主类。在代码运行没有任何问题之前,但在我添加了读写文件之后,我的代码开始收到堆栈流错误。只是调用错误的片段。 public class Item implements java.io.Serializable { public static String name; public static double price; public static double amount; public int max = 1; SlayerProgram sp = new SlayerProgram(); ReadFile rf = new ReadFile(); public Item(String name, double price,double amount ) { this.name = name; this.price = price; this.amount = amount; } public void ItemSet(String name, double price,double amount) { this.name = name; this.price = price; this.amount = amount }我的主要课程: public class SlayerProgram {//import file txts, and Item Class static String name; static double price; static double amount; Item item = new Item(name,price,amount);ReadFile rf = new ReadFile();static String fileNameText = "D:\\Game\\SlayerProgram\\Name.txt";static String filePriceInt = "D:\\Game\\SlayerProgram\\Price.txt";static String fileAmountInt ="D:\\Game\\SlayerProgram\\Amount.txt"; //begin file Read public void BeginText() throws IOException{ TextFile();}public void Max(){ item.Max();} //declare needed Data Types; final int max = item.max; ArrayList<String> Name = new ArrayList<>(); ArrayList<Double> Price = new ArrayList<>(); double size = Price.size(); ArrayList<Double> Amount = new ArrayList<>();Exception in thread "main" java.lang.StackOverflowErrorat slayerprogram.Item.<init>(Item.java:18)at slayerprogram.SlayerProgram.<init>(SlayerProgram.java:25)at slayerprogram.Item.<init>(Item.java:18)at slayerprogram.SlayerProgram.<init>(SlayerProgram.java:25)如何找到导致堆栈溢出的位置?
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
Item
创建SlayerProgram
:
SlayerProgram sp = new SlayerProgram();
并SlayerProgram
创造Item
Item item = new Item(name,price,amount);
因此,在初始化时,您将无休止地创建这些对象
有一个类似的Baeldung 示例用于获取 StackOverflowError
这以 StackOverflowError 告终,因为 ClassOne 的构造函数正在实例化 ClassTwo,而 ClassTwo 的构造函数又在实例化 ClassOne。
回首忆惘然
TA贡献1847条经验 获得超11个赞
因为和类之间存在circular
依赖关系。您已经在 class和in class中创建了。所以当你尝试创建它的对象时,它会尝试创建它的对象,然后尝试创建它的对象,它仍然会继续并导致。Item
SlayerProgram
Item item = new Item(name,price,amount);
SlayerProgram
SlayerProgram sp = new SlayerProgram();
Item
Item
SlayerProgram
SlayerProgram
Item
method stack is not full
StackOverflow
添加回答
举报
0/150
提交
取消