gpt4 book ai didi

java - 类的 StackOverFlow 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:26 25 4
gpt4 key购买 nike

我正在尝试制作两个类,每个类都有另一个类的实例化,但有一个 java.lang.StackOverFlowError。第一类如下所示

public class ReverseGPA {
GPpredictor gp_predictor = new GPpredictor(); //This is the line that causes error

double CURRENT_CREDITS;
double FUTURE_CREDITS;
double CUM_GPA;
double DESIRED_GPA;

double NEW_GRADE_POINT;
int ROUNDED_GRADE_POINT;

double NEW_GPS;
}

另一个类看起来像这样

public class GPpredictor {
ReverseGPA rev_gpa = new ReverseGPA(); //This is the line that causes error

ArrayList<String> arrayCourseName = new ArrayList<>();
ArrayList<Integer> arrayCourseCredit = new ArrayList<>();
ArrayList<String> arrayCourseGrade = new ArrayList<>();

int COURSES;
int CREDIT;
String COURSENAME;

//For predicting purposes
int GRADE;
}

我这样做是因为我需要使用类 ReverseGPA 中的方法在类 GPpredictor 中使用(我需要使用成绩点,通过使用 getter 方法)

非常感谢任何评论和帮助

最佳答案

当类在它们自己内部创建彼此的实例时,您将进行无限递归,因此 ReverseGPA 创建一个 GPpredictor 实例,该实例创建一个 ReverseGPA,该实例创建一个 GPpredictor,该 GPpredictor 创建一个 ReverseGPA,该 ReverseGPA 创建一个 GPpredictor,该 GPpredictor 创建一个 ReverseGPA,它创建GP预测器....

因此,以具体的方式,您有:

public class A {
B b = new B();
}

public class B {
A a = new A();
}

停止疯狂——通过构造函数参数或 setter 方法将一个实例传递给至少一个这些类。我不确定你的类(class)做什么,所以我不能说哪个(或两个)应该这样做。

再一次,以具体的方式,至少做一件事情

public class A {
B b;

public void setB(B b) {
this.b = b;
}
}

public class B {
A a;

public B(A a) {
this.a = a;
}
}

在main方法中

public static void main(String[] args) {
A a = new A();
B b = new B(a); // pass a into B
a.setB(b); // pass b into A
}

关于java - 类的 StackOverFlow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com