Exception in thread "main" java.lang.StackOverflowError

ola pessoal

eu estou com um problema que nao sei como resolver, pois o programa estoira

eu tenho duas classes, em que na primeira instancio a segunda e na segunda instancio a primeira

é que eu tenho uma classe chamada jogo e a outra chamada regras

a primeira

		final Rules result = new Rules();
		final Cards gr = new Cards();

		play2a = gr.GameRules2();
		play2aa = gr.GameRules3();

ActionListener five = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			pn10.setText(result.test());
			}
		};

a segunda:

[code]public class Rules {
final King rules = new King();

public String test() {
	if (rules.play2a > rules.play2aa) {
		String result = "Player 1 get all cards";
		return result;
	} else {
		String result_ = "Player two get all cards";
		return result_;
	}
}

}
[/code]

como posso resolver isto? agradecia ajuda :wink:

qual deles eh o main? nao eh mais facil vc colar a pilha da exception ae pra gente ver?

obrigado pela resposta, o main não é nenhum deles, é outra classe a parte que instancia a primeira que eu postei acima (tem muitas mais coisas)

o erro é devido ao facto de eu estar chamando uma à outra e vice versa, pois se eu apagar o final King rules = new King(); o programa deixa de estoirar

Exception in thread "main" java.lang.StackOverflowError
	at javax.swing.SwingUtilities.appContextGet(SwingUtilities.java:1862)
	at javax.swing.UIManager.getLAFState(UIManager.java:238)
	at javax.swing.UIManager.maybeInitialize(UIManager.java:1393)
	at javax.swing.UIManager.getDefaults(UIManager.java:644)
	at javax.swing.UIManager.getFont(UIManager.java:657)
	at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:207)
	at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:66)
	at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:56)
	at javax.swing.JComponent.setUI(JComponent.java:651)
	at javax.swing.JPanel.setUI(JPanel.java:153)
	at javax.swing.JPanel.updateUI(JPanel.java:126)
	at javax.swing.JPanel.<init>(JPanel.java:86)
	at javax.swing.JPanel.<init>(JPanel.java:109)
	at javax.swing.JPanel.<init>(JPanel.java:117)
	at game.King.<init>(King.java:24)
	at game.Rules.<init>(Rules.java:4)
	at game.King.<init>(King.java:143)
	at game.Rules.<init>(Rules.java:4)
	at game.King.<init>(King.java:143)
	at game.Rules.<init>(Rules.java:4)
//continua  alternando o king com o rules o erro

O erro é mesmo esse. Uma fica criando a outra indefinidamente. O mais provável é que, num dos casos, tenhas de passar a classe que cria como parametro.

eu estou inclinado a utlizar uma classe abstracta ou mesmo interface, pode explicar melhor a sua ideia? um exemplo talvez

obrigado

Algo como:

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

class B {

    A a;    

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