Quando declarado uma variavel como final, mesmo que dentro do parametro, ela não se torna constante?
static int x(final int l)
Quando declarado uma variavel como final, mesmo que dentro do parametro, ela não se torna constante?
static int x(final int l)
Olá, Adonis!
Sua pergunta é muito interessante! Quando declaramos uma variável como final
, ela se torna uma constante, sim. Isso significa que, uma vez atribuído um valor a ela, não podemos alterar esse valor.
No entanto, o que está acontecendo no código que você compartilhou é um pouco diferente. A variável l
é declarada como final
, o que significa que seu valor não pode ser alterado dentro do método x()
.
Mas o problema aqui é que l
está sendo usada no case
de um switch
, que requer uma constante em tempo de compilação (um valor que é conhecido e não muda durante a execução do programa). Como l
é um parâmetro do método, seu valor não é conhecido em tempo de compilação, mesmo sendo final
. Isso é o que causa o erro de compilação.
Para ilustrar, se substituíssemos l
por um valor constante conhecido em tempo de compilação, como 5
, o código compilaria e funcionaria conforme esperado.
Espero ter ajudado e bons estudos!
Muito obrigado, Matheus!!