¿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