PDA

View Full Version : JAVA: Strano errore in Eclipse


biowep
29-05-2014, 20:11
Salve,
Eclipse mi segnala un errore che non riesco a capire come risolvere.

Dunque ho questa classe
final class Bracket extends Operator {
public final boolean open;
//...
}
E da qualche altra parte ho un'altra classe che fa parte dello stesso package che in uno dei suoi metodi ha questa porzione di codice:

temp = result.peekLast();//Deque<Op>.peekLast();
if (
temp == null ||
temp instanceof Operator &&
!(temp instanceof Bracket && temp.open)
)
A quanto parte "open cannot be resolved or is not a field". In pratica è come se non si accorgesse che io ho già verificato che la variabile temp sia istanza di Bracket.

Ho provato a rendere pubblica la classe Bracket, ho provato ad aggiornare il progetto (ed anche la funzione Build Project, sempre per aggiornare).
Premetto che quello è l'unico errore nel file con il secondo codice ed il file con la classe Bracket non contiene errori.

sottovento
29-05-2014, 20:35
A quanto pare

temp = result.peekLast();


non ritorna un Operator e nemmeno un Bracket, altrimenti non avresti controllato con un instanceof.
Pertanto ovviamente non trova il campo in questione. Lo troverebbe, se effettuassi un cast a Bracket (che puoi fare, visto che hai gia' controllato che si tratta del tipo giusto)

Per intenderci

if (
temp == null ||
temp instanceof Operator &&
!(temp instanceof Bracket && ((Bracket)temp).open)
)

biowep
29-05-2014, 21:02
Grazie mille,
non ci avevo pensato perché ricordo che fino ad ora me lo faceva in automatico ma questa volta per qualche ragione no.

Daniels118
30-05-2014, 14:26
Nulla di automatico, se funzionava vuol dire che avevi dichiarato temp di tipo Bracket, oppure che avevi dichiarato open all'interno di un'altra classe estesa dal tipo di temp.