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 praticase 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
grazie per chi mi risponderà,ne ho davvero bisogno!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

se qualcuno conoscesse il pattern state e potesse darmi una dritta su come agire gliene sarei grato!
Rispondi quotando



? grazie
