![](/img/trans.png)
[英]Getting a Stackoverflow error while sending the instance of Main Class to another class
[英]stackoverflow error using instance of class
因此,我正在申請工資單,但遇到了問題。 每次我運行它時,都會遇到stackoverflow錯誤。 我似乎無法找出錯誤。 我已經在這個問題上停留了一段時間,但是任何幫助將不勝感激。 我注釋掉了分配獎金上的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
這將創建一個新的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
在那里兩次?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.