Inferência a partir do java 10

Olá pessoal!!

Estou utilizando java 11 com inteliJ e a ide esta retornando erro ao utilizar o recurso de inferencia ‘var’ alguem saberia me informar oque pode ser?

obs.: java 11 ja esta definido como sdk padrao e tambem como language level da intelij

var inteiro = Integer.getInteger(“10”);

o erro:

Cannot resolve symbol ‘var’

Comigo já aconteceu o seguinte. O projeto está configurado na versão 11 do jdk. E no settings do intellij, na parte do maven (ou gradle), está configurado para compilar na versão 8 do jdk. Não sei se tu tah usando maven ou gradle, mas foi a unica situação que tive esse tipo de problema.

1 curtida

Seu código funciona no Java >= 10 sim, o probema deve ser alguma configuração do seu ambiente, como já disseram.

Veja aqui funcionando (este link usa o Java 12, mas também fiz um teste no Java 10 e 11, e ambos funcionaram). Mas só tem um detalhe: veja no link que o valor resultante foi null.

Isso porque, segundo a documentação, Integer.getInteger recebe o nome de uma system property, e converte o valor desta property para um número inteiro (mas se a propriedade não existe, é retornado null).

Então a menos que você esteja rodando o programa com algo do tipo java -D10=123 SuaClasse (pois assim estou setando a propriedade cujo nome é 10 e o valor é 123), este código não faz o que - aparentemente - você está querendo.

Se a ideia é converter a string "10" no número 10, aí você tem que usar Integer.parseInt (se quer que o resultado seja um int) ou Integer.valueOf (se quer que o resultado seja um Integer).

1 curtida

Muito Obrigado!! seu exemplo de codigo me fez perceber que faltavam fazer os imports corretos!!
e realmente er estava totalmente errado ao usar o Integer.getInteger
Fica aqui meus agradecimentos!

Ate que tá configurado direitinho meu erro foi nao fazer os imports devidamente! :man_facepalming:
Muito obrigado por tirar um tempinho ai pra me ajudar tmb!!