У меня есть два файла класса java. Каждый из них имеет методы, которые использует другой.Классы Java ссылаются друг на друга
public class class1{
class2 c2 = new class2();
m1(){
c2.ma();
m2();
}
m2(){}
}
public class class2{
class1 c1 = new class1();
ma(){}
mb(){
c1.m2();
}
}
Линии
class1 c1 = new class1();
и
class2 c2 = new class2();
ссылаются друг на друга вызывает бесконечный цикл, что приводит к ошибке java.lang.StackOverflowError.
Есть ли способ, чтобы классы относились друг к другу или у меня нет выбора, кроме как передать все мои методы в один класс?
Это какая-то практика? Если нет, циклические ссылки, вероятно, могут быть запахом кода. Вам действительно нужны оба класса, чтобы зависеть друг от друга? – CKing
Проверьте этот шаблон: https://en.wikipedia.org/wiki/Inversion_of_control –
Переполнение стека не имеет ничего общего с классами, ссылающимися друг на друга. Это вполне возможно и поддерживается Java для этого. Исключение вызвано слишком глубоким recursin, это может произойти и с одним методом/классом. – eckes