Ciao a todos,sto avendo un fastidioso problema con il suddetto errore,googlando un pò ho scoperto che accade quando ci sono dei cicli infiniti oppure delle ricorsioni "too deep",credo di essere nel secondo caso.In pratica sto utilizzando il pattern "State",entro nello stato iniziale ed ho la necessità di verificare una condizione in ogni secondo,solo se questa è verificata posso fare un transition nel successivo stato altrimenti faccio la transition nello stato in cui mi trovo per far si appunto di riverificare la condizione.E qui credo stia il problema in quanto ogni volta che eseguo la transition eseguo sempre e solo la entryAction dello stato in cui mi trovo quindi in pratica è una chiamata ricorsiva implicita che culmina con uno StackOverflowError.Naturalmente ho visto alcune soluzioni che riguardano l'aumento della size dello stack ma non credo mi interessino perchè è un errore di programmazione più che di java,il fatto è che non so come agirare il problema,ho provato con un while(true) con tanto di Thread.sleep(long ms) per verificare la condizione in ogni secondo ma facendo così si blocca il resto dell'applicazione,gira solo il while(true) in pratica
se qualcuno conoscesse il pattern state e potesse darmi una dritta su come agire gliene sarei grato!
p.s. posto un esempio di codice del problema
codice:
public class Application extends FSM { // finite state machine
private boolean condition=...; // valore dato da una chiamata ad un metodo di un altra classe
private State INITIAL_STATE = new InitialState();
private State FOLLOW_STATE = new FollowState();
private class InitialState extends State {
public void entryAction() { //entryAction metodo della classe State
if(condition)
transition(FOLLOW_STATE); // metodo di FSM che mi fa spostare in un altro stato
else transition(INITIAL_STATE);
}
} // InitialState
private class FollowState extends State {
}
}//Application
grazie per chi mi risponderà,ne ho davvero bisogno!