java - 使用类实例的计算器错误

标签 java stack-overflow

所以我在制作工资单应用程序时遇到了问题。每次我去运行它时,它都会出现一个 stackoverflow 错误。我似乎无法找出错误。我已经在这个问题上停留了一段时间,但我们将不胜感激任何帮助。我在 assign bonus 上注释掉了 mainform 变量,它似乎有效,但我需要该变量才能返回到其他表单。

Exception in thread "main" java.lang.StackOverflowError
    at sun.awt.CGraphicsConfig.nativeGetBounds(Native Method)
    at sun.awt.CGraphicsConfig.getBounds(CGraphicsConfig.java:56)
    at java.awt.Window.init(Window.java:505)
    at java.awt.Window.<init>(Window.java:537)
    at java.awt.Frame.<init>(Frame.java:420)
    at java.awt.Frame.<init>(Frame.java:385)
    at javax.swing.JFrame.<init>(JFrame.java:189)
    at oca.project.MainForm.<init>(MainForm.java:91)
    at oca.project.AssignBonusForm.<init>(AssignBonusForm.java:80)
    at oca.project.MainForm.<init>(MainForm.java:22)

主类

package oca.project;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class OCAProject {

 static ArrayList<Person> persons = new ArrayList<>();

    public static void main(String[] args) {

         CEO JamesMint = new CEO();
        //making objects 
 AdministrationManager BillJohns = new AdministrationManager(JamesMint);
FinancialAdministrator EricWhite = new FinancialAdministrator(JamesMint);
 persons.add(JamesMint);
 persons.add(BillJohns);
persons.add(EricWhite);

 //declaring form and passing arraylist as parameter
        MainForm frame = new MainForm(persons);
        frame.setVisible(true); 
    }
}

大型机类

package oca.project;
import java.util.ArrayList;

public class MainForm extends javax.swing.JFrame {
  //array list to hold the report items
    private ArrayList<PayrollReportItem> payRolllist = new ArrayList<>();

  AssignBonusForm assignFrame = new AssignBonusForm(payRolllist);
void setList(ArrayList<Person> persons) {
//sets arraylist

      assignFrame.setPersons(persons);


   }
 public MainForm(ArrayList<Person> persons) {
           initComponents();
        setList(persons);
       }

 private void btnAssignBonusActionPerformed(java.awt.event.ActionEvent evt) {                                               

//to open assign bonus form
      assignFrame.setVisible(true);
        this.dispose();


    }   

分配奖金表格

package oca.project;

import java.util.ArrayList;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;


/**
 *
 * Form that allows managers assign bonuses to their subordinates 
 */
public class AssignBonusForm extends javax.swing.JFrame  {

 static ArrayList<Person> persons = new ArrayList<>();

  /**
     * Creates new form AssignBonusForm
     * @param payRolllist
     */


    public AssignBonusForm(ArrayList<PayrollReportItem> payRolllist) {
        initComponents();


      System.out.println(persons);
    } 

    private AssignBonusForm() {


    }

    public void setPersons(ArrayList<Person> persons) {
    AssignBonusForm.persons = persons;
    }

    public ArrayList<Person> getPersons() {
        return persons;
    }

MainForm form = new MainForm(persons);

   private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {                                        

        form.setVisible(true);

        this.dispose();
    }                                       

最佳答案

很难说格式不好,但是,这对您来说不觉得有点奇怪吗?

public class MainForm
    ...
    AssignBonusForm assignFrame = new AssignBonusForm(payRolllist);

public class AssignBonusForm
    ...
    MainForm form = new MainForm(persons);

当您创建一个新的 MainForm 时,您认为会发生什么AssignBonusForm 创建一个新的 MainForm 它创建一个新的 AssignBonusForm 它创建一个新的 MainForm 它创建一个新的 AssignBonusForm 创建一个新的 MainForm,它创建一个新的 ...

您可以在堆栈跟踪中看到这一点:

...    
at oca.project.MainForm.<init>(MainForm.java:91)
at oca.project.AssignBonusForm.<init>(AssignBonusForm.java:80)
at oca.project.MainForm.<init>(MainForm.java:22)

为什么 MainForm 在那里两次?

关于java - 使用类实例的计算器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016065/

相关文章:

java - 如何模拟 HttpSession 并将其作为参数传递给与 session 一起使用的方法?

java - Libgdx 相机/缩放问题

python - 为什么我的堆栈缓冲区溢出漏洞利用不起作用?

java - 用递归方法解决 stackoverflowException

java捕获堆栈溢出,获取消息显示和返回问题

java - XML 文档转换 StackOverflowError

java - JavaScript 中依赖于语言环境的字符串排序/比较

java - 实例变量的初始化程序 block

javascript - `process.nextTick` 如何防止我的堆栈崩溃?

java - Spring Boot EnableJpaRepositories 错误