a palavra reservada ‘final’ quer dizer que o primeiro valor que for atribuido à variável será seu valor final.
na linha 6 voce definiu qual será o valor final da sua variável. (certo)
já na linha 10 voce tentou modificar o valor de uma variável do tipo final. (por isso dá erro)
joaoorso
christianovale:
a palavra reservada ‘final’ quer dizer que o primeiro valor que for atribuido à variável será seu valor final.
na linha 6 voce definiu qual será o valor final da sua variável. (certo)
Certo !
christianovale:
já na linha 10 voce tentou modificar o valor de uma variável do tipo final. (por isso dá erro)
Que variavel é essa ?
Pois (contador) não é do tipo final e é a única variável que está sendo modificada. Não é ?
Obridado :thumbup:
G
grustk
Achei isso:
A local variable (§14.4, §14.14) must be explicitly given a value before it is used, by either initialization (§14.4) or assignment (§15.26), in a way that can be verified by the compiler using the rules for definite assignment (§16). http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5
Mas também não entendi porque não está sendo entendido com “definite assignement”.
T
thingol
Isso é uma sutileza do Java que pode ser lida, se você souber língua de advogado, neste lugar:
foi o uso de um “blank final” e a inicialização desse “blank final” com o valor 6.
Entretanto, constantes usadas nos “cases” do switch não podem ser “blank finals”, por isso o erro ocorreu na linha 10, não na linha 6 (a inicialização nessa linha é perfeitamente válida, embora seja esquisita).
G
grustk
Fiz outros testes, e mesmo o código especificado na especificação não funciona:
Negócio esquisito né ! :?:
O pior é que isso é uma questão que encontrei em um simulado para SCJP.
Tomara que não caia questão desse tipo na prova, pois eu não entendi.