A inferência do tipo Java 10 para variáveis locais pode inferir nulo?
Com o Java 10, podemos usar a inferência de tipo.
String s1 = "hello"; // before Java 10
var s2 = "hello"; // now
No entanto, há uma coisa que não podíamos fazer antes: ter variáveis do tipovazio.
Então, nas versões anteriores, simplesmente não podíamos definir o tipo de variávelvoid
. Mas agora podemos atribuir o resultado do método retornandovoid
para a variável:
void emptyMethod() { }
...
void v1 = emptyMethod(); // won't compile
var v2 = emptyMethod(); // no problem at all
A questão é: por que ela compila, a que finalidade serve? Você tem algum caso de uso para essa coisa estranha?
Variável do tipovoid
não possui métodos, nem sequer pode ser usado como parâmetro de um método.