java type-inference java-10

¿Puede la inferencia de tipo de Java 10 para variables locales inferir vacío?



type-inference java-10 (1)

Con Java 10, podemos usar la inferencia de tipos.

String s1 = "hello"; // before Java 10 var s2 = "hello"; // now

Sin embargo, hay una cosa que no podíamos hacer antes: tener variables de tipo void .

Entonces, en versiones anteriores simplemente no pudimos definir el tipo de variable void . Pero ahora podemos asignar el resultado del método que devuelve void a la variable:

void emptyMethod() { } ... void v1 = emptyMethod(); // won''t compile var v2 = emptyMethod(); // no problem at all

La pregunta es: ¿por qué incluso se compila, para qué sirve? ¿Tienes algún caso de uso para esta cosa extraña?

La variable de tipo void no tiene métodos, ni siquiera puede usarse como parámetro de un método.


¿Por qué crees que se compila? No se compila:

> javac Main.java Main.java:5: error: cannot infer type for local variable v2 var v2 = emptyMethod(); // no problem at all ^ (variable initializer is ''void'') 1 error

Probablemente uses IntelliJ IDEA, ¿verdad? IDEA actualmente no detecta este tipo de error. Hay un error para eso: https://youtrack.jetbrains.com/issue/IDEA-188623