Java 8 : Les nouveautés

Découvrir l'inférence de types améliorée

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
L'inférence de types est améliorée. Elle est pratique pour les conteneurs génériques et la réflexion sur les paramètres de méthodes fonctionne jusqu'au nom du paramètre.

Transcription

Dans cette vidéo, nous allons nous intéresser à l'amélioration donc sur l'inférence de type en Java. Alors pour donner un petit exemple de ce que ça représente, donc d'abord l'inférence de type est un mot bien savant pour simplement expliquer que le compilateur est capable de dominer le type de l'objet que vous voulez obtenir. Alors en Java, c'est en particulier vrai sur les classes génériques. Donc vous connaissez ce genre de code liste de string. maListe = new ArrayList de string. Donc vous savez que ce code peut paraître un peu barbant en fait à la longue, essentiellement de par la répétition du type de généricité sur à la fois l'interface liste et sur la classe liste. Donc ici je vais commencer par me débarrasser de ces liserés rouges, en faisant les imports qui vont bien. Je vais importer les listes et ArrayList, venant du package Java.util. Et vous savez que vous avez la possibilité de faire de l'inférence de type. Je le reprends en supprimant le paramètre de généricité string ici. Le compilateur va deviner en quelque sorte, mais imposer le type string sur ArrayList, pour qu'il soit compatible avec liste de string. Donc ça c'est ce qu'on appelle l'inférence de type, et ça existe donc depuis Java 6. Donc nous avons maintenant une inférence de type améliorée, dans la mesure où, quand vous appelez la méthode par exemple collection.emptyList, à priori, ce que vous récupérez ici, c'est une liste d'object. Donc si vous essayez d'écrire un code du genre maListe = Collections.emptyList, ce qui ne serait pas non plus complètement idiot en fait. en Java 7 vous avez une erreur qui est levée, qui vous signale que d'un côté vous avez des object, et de l'autre côté vous avez désormais des string. Autant passer de string vers object ne serait pas gênant, vous savez bien que passer de object vers string est un problème. En Java 7, vous seriez obligé ici d'imposer donc la conversion de votre liste de object en liste de string; conversion ou tout simplement simple coercition de type pour que le compilateur l'accepte. En Java 8, cette partie là Et en Java8 donc, ce code passe tout à fait bien à la compilation. Donc ça c'est une amélioration de l'inférence de type; donc le compilateur devine le type que vous voulez obtenir grâce au type de la référence, qui est la cible de votre affectation. Une autre amélioration en Java 8 consiste à obtenir le nom des paramètres. Pour cela je fais un petit exemple en créant une classe, c'est original- je vais l'appeler personne-. Cette classe personne possédera donc en privé un attribut qui est l'âge, et il y aura en public les getters, les setters GetAge, qui retournent l'âge bien entendu. Et en public il y aura le SetAge, qui prend donc un âge en paramètre. Donc voilà la classe personne sur laquelle je vais travailler. Je vais donc maintenant ici faire un petit peu de réflexion sur cette classe personne. Je vais commencer par récupérer les méthodes de la classe personne. Donc je vais préparer un tableau de méthodes, les méthodes = donc ici personne.classe.getMethode que vous avez ici. Pour chacune de ces méthodes alors, alt entrée me permet d'avoir donc l'équivalent du quickFIX, donc ici je vais importer java.lang.reflect.Method de façon à ne pas avoir le nom complet de la classe à écrire. Ensuite je vais faire pour une méthode m que je trouve dans le tableau des méthodes . Pour chaque méthode m que je trouve dans les méthodes, je vais maintenant récupérer les paramètres en fait, de la méthode. Donc je vais faire un GetParameters sur la méthode, un petit donc ici je vais récupérer m.GetParameters Ce GetParameters me retourne un tableau de paramètres. Donc là tout ce que je fais, c'est alt entrée pour l'aider à faire la complétion. Donc voilà je récupère les paramètres, et enfin donc pour chaque paramètre p, que je trouve dans parameters, alors comme il a généré lui-même le tableau, eh bien je vais pas changer le nom du tableau. Je vais venir faire afficher System.out.println. Je vais venir faire afficher le paramètre alors, nom du paramètre +p.getName Ici je pourrai faire donc afficher par ailleurs, le type .getType, sous la forme de sa classe. Donc on va voir ce que ça va afficher. Donc j'exécute mon affaire, donc ici type du paramètre, alors type du paramètre Int. Donc peut-être que tout simplement j'aurais pu faire aussi afficher. Le nom de la méthode .out.println Méthode+m.getName, histoire que je m'y retrouve un petit peu, en particulier pour voir qu'en réalité, parmi les méthodes qui me sont proposées, j'en ai quand même beaucoup qui ne sont pas du tout les méthodes réellement de la classe. Donc ici en fait, j'aurais pu utiliser getDeclareMethode, pour me limiter aux méthodes de la classe personne elle-même, et non pas récupérer toute la méthode héritée. Donc effectivement beaucoup plus simple, la méthode GetAge, donc évidemment pas de paramètres, et la méthode SetAge, et ici donc, j'ai un paramètre entier, c'est logique et le nom du paramètre, ici arg0. Et en Java8, vous pouvez récupérer le nom réel de ce paramètre.

Java 8 : Les nouveautés

Découvrez les nouveautés introduites par la version 8 de Java. Voyez les expressions lambda, les références de méthodes, les méthodes par défaut dans les interfaces, etc.

1h44 (21 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Spécial abonnés
Date de parution :17 août 2015

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !