Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    ERRORE local variable is accesed from within inner class; needs to be declared final

    Ciao, premetto che sono assolutamente inesperto di Java e quindi per molti di voi questo questo quesito sembrerà un insulto, ma vi prego di darmi una dritta su come risolvere la faccenda.
    La mia situazione è questa: all'interno di un metodo vorrei modificare il valore di una variabile booleana (che intendo utilizzare come flag) e poi, all'esterno del metodo, in base a quello che è il valore della variabile, eseguire determinate azioni. Ok, sicuramente non sono stato chiaro a sufficienza, quindi vi posto il codice "incriminato".

    codice:
    boolean inputev       = false;       // variabile che fungerà da Flag
    boolean outputev     = false;	     // variabile che fungerà da Flag
    boolean connected   = false;       
                
    while (repeat > 0  &&  connected == false)     
    {        
      Thread.sleep(1);       repeat--;       
      Terminal srcTerm = provider.getTerminal(src); 		  
      srcTerm.addObserver(new TerminalObserver() { 		   
         public void terminalChangedEvent(TermEv[] evlist){ 		      
           for(int i=0; i<evlist.length; i++) 
             {				 			        
                 if (evlist[i].getID() == CiscoRTPInputStartedEv.ID)
                 {
                    inputev = true;                 
                 } 			        
                 else if (evlist[i].getID() == CiscoRTPOutputStartedEv.ID)
                 { 				         
                    outputev = true; 			        
                 }          
             }       
           }
       });       
       
       if ( inputev  == true  &&  outputev == true )
       {          
          connected = true;         
       }                
    }    // fine ciclo while
    In fase di compilazione mi compare, per entrambi le variabili, il seguente errore:

    local variable inputev/outputev is accesed from within inner class; needs to be declared final
    C'è un modo di risolvere la questione uscendone vivi? Vi prego di darmi una mano.

    Grazie!

    P.S.: il frammento di codice che vedete fa parte di una funzione Java che serve a far iniziare una conferenza telefonica in un PBX della Cisco tramite l'utilizzo delle Cisco JTAPI.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: ERRORE local variable is accesed from within inner class; needs to be declared fi

    C'è scritto cosa devi fare, eh...

    Una variabile locale può essere utilizzata all'interno di una classe anonima solo se dichiarata final (per una questione di "ciclo di vita"). Se però la dichiari final non puoi più modificarla (come invece fai tu). La soluzione? Sposta quelle variabili al di fuori del blocco locale...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: Re: ERRORE local variable is accesed from within inner class; needs to be declared fi

    Originariamente inviato da Alex'87
    C'è scritto cosa devi fare, eh...

    Una variabile locale può essere utilizzata all'interno di una classe anonima solo se dichiarata final (per una questione di "ciclo di vita"). Se però la dichiari final non puoi più modificarla (come invece fai tu). La soluzione? Sposta quelle variabili al di fuori del blocco locale...
    Ciao, anzitutto grazie per la velocità con cui mi hai risposto. Ho postato la domanda perchè sapevo che non avrei potuto dichiarare le variabili in questione come final. A questo punto ti chiederei, se possibile, un altro piccolo sforzo, ovvero come eseguire compiutamente la soluzione che mi hai suggerito, cioè come spostare le variabili al di fuori del blocco locale.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: ERRORE local variable is accesed from within inner class; needs to be dec

    ...

    Quel codice si trova all'interno di un metodo immagino... Prendi le variabili che usi nella classe interna e dichiarale fuori da quel metodo. Tutto qui (come si può leggere in un qualsiasi manuale Java, capitolo sulle classi interne )
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5

    Re: Re: Re: Re: ERRORE local variable is accesed from within inner class; needs to be dec

    Originariamente inviato da Alex'87
    ...

    Quel codice si trova all'interno di un metodo immagino... Prendi le variabili che usi nella classe interna e dichiarale fuori da quel metodo. Tutto qui (come si può leggere in un qualsiasi manuale Java, capitolo sulle classi interne )
    Ciao, ti chiedo scusa per averti costretto a dovermi rispondere ancora. Ieri sera, ho postato il mio secondo messaggio senza aver letto bene il tuo; dopo averlo riletto, infatti, ho capito al volo cosa intendessi consigliarmi e ho modificato subito il codice. La mia colpa è non aver postato un terzo messaggio in cui spiegavo di aver capito.

    Scusa ancora e grazie di tutto!

    Prometto solennemente che la prossima volta cercherò meglio nel manuale!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.