Est-ce que l’inférence de type Java 10 pour les variables locales peut inférer un vide?

Avec Java 10, nous pouvons utiliser l’inférence de type.

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

Cependant, il y a une chose que nous ne pouvions pas faire auparavant: avoir des variables de type void .

Ainsi, dans les versions précédentes, nous ne pouvions tout simplement pas définir le type de variable void . Mais maintenant, nous pouvons affecter le résultat de la méthode renvoyant void à la variable:

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

La question est la suivante: pourquoi comstack-t-il même, à quoi sert-il? Avez-vous un cas d’utilisation pour cette chose étrange?

La variable de type void n’a pas de méthode, elle ne peut même pas être utilisée comme paramètre d’une méthode.

Pourquoi pensez-vous qu’il comstack? Il ne comstack pas:

 > 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 

Vous utilisez probablement IntelliJ IDEA, n’est-ce pas? Actuellement, IDEA ne détecte pas ce type d’erreur. Il y a un bug pour cela: https://youtrack.jetbrains.com/issue/IDEA-188623