本文介紹了為什么我收到堆棧溢出?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我的第一個代碼塊是我的Item對象文件;第二個是Main Class。在代碼運行之前沒有任何問題,但是在我添加了一個讀寫文件之后,我的代碼開始接收到堆棧流錯誤。只是正在調用其錯誤的代碼段。
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.StackOverflowError
at 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)
如何找到導致堆棧溢出的位置?
推薦答案
Item
創建SlayerProgram
:
SlayerProgram sp = new SlayerProgram();
和SlayerProgram
創建Item
Item item = new Item(name,price,amount);
因此在初始化時,您將無休止地創建這些對象
獲取StackOverflow Error有類似的Baeldung example
這以StackOverflow Error結束,因為ClassOne的構造函數實例化ClassTwo,而ClassTwo的構造函數再次實例化ClassOne。
這篇關于為什么我收到堆棧溢出?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,