为什么我会收到堆栈溢出?

我的第一个代码块是我的项目对象文件;第二个是主类。在代码运行没有任何问题之前,但在我添加了读写文件之后,我的代码开始收到堆栈流错误。只是调用错误的片段。


    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)

如何找到导致堆栈溢出的位置?


慕婉清6462132
浏览 75回答 2
2回答

繁华开满天机

Item创建SlayerProgram:SlayerProgram&nbsp;sp&nbsp;=&nbsp;new&nbsp;SlayerProgram();并SlayerProgram创造ItemItem&nbsp;item&nbsp;=&nbsp;new&nbsp;Item(name,price,amount);因此,在初始化时,您将无休止地创建这些对象有一个类似的Baeldung 示例用于获取 StackOverflowError这以 StackOverflowError 告终,因为 ClassOne 的构造函数正在实例化 ClassTwo,而 ClassTwo 的构造函数又在实例化 ClassOne。

回首忆惘然

因为和类之间存在circular依赖关系。您已经在 class和in class中创建了。所以当你尝试创建它的对象时,它会尝试创建它的对象,然后尝试创建它的对象,它仍然会继续并导致。ItemSlayerProgramItem item = new Item(name,price,amount);SlayerProgramSlayerProgram sp = new SlayerProgram();ItemItemSlayerProgramSlayerProgramItemmethod stack is not fullStackOverflow
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java