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.