Java 11 – Les modifications de l’inférence de type

Bonjour à tous et bienvenue dans cet article qui fait suite à celui sur l’inférence de type avec Java 10.

Dans cet article, nous allons voir les améliorations apportées à l’inférence de type dans la prochaine version du langage, Java 11, prévu pour le 25 septembre 2018.

L’inférence de type introduite avec Java 10 avait un certain nombre de limitations, que nous avions déjà évoquées dans des précédents articles (ici et ici).

Java 11, au travers de la JEP 323, propose une extension de l’inférence de type des variables locales aux paramètres des lambdas.

Il est donc maintenant possible de faire :

Avantage par rapport au typage implicite

Vous vous demandez peut-être l’interêt que cela peut avoir comparé au typage implicite qui était déjà disponible. Ci-suit une petite comparaison :

En effet, la syntaxe avec l’inférence n’est pas spécialement plus pratique que le typage implicite dans un cas comme celui-ci. On pourrait arguer que var a l’avantage de proposer une syntaxe uniforme avec les autres variables locales.

Cependant, contrairement au typage implicite, l’usage de l’inférence de type permet l’utilisation de modificateurs et d’annotations. C’est une des raisons qui ont poussé à son adoption avec Java 11 :

Dans le cas d’utilisation de types complexes, il est largement préférable encore une fois d’utiliser l’inférence de type que le typage explicite :

Limitation

La proposition indique quelques limitations concernant cette fonctionnalité. Premièrement, il n’est pas autorisé de mélanger les différentes techniques :

De plus, il n’est pas possible d’omettre les parenthèses avec l’inférence de type comme c’est le cas avec le typage implicite :

Cette petite amélioration de Java 11 va donc permettre de largement simplifier l’usage des lambdas lorsqu’on utilise des types complexes associés à des annotations ou des modificateurs tels que final et d’uniformiser les déclarations de variables locales.

Merci d’avoir lu cet article, et à bientôt :).

Références et ressources

%d bloggers like this: