Java 8
FIP ING 39
Serge Rosmorduc
Conservatoire National des Arts et Métiers
2016-2017
Serge Rosmorduc Java 8 2016-2017 1 / 27
But du cours
montrer la grande nouveauté de java 8 : les lambda-expressions ;
compléter par quelques autres nouveautés qui améliorent la vie.
Serge Rosmorduc Java 8 2016-2017 2 / 27
Méthodes par défaut dans les interfaces
une interface ne contient que des en-têtes de méthodes ;
souvent, il y a cependant une certaine redondance entre celles-ci :
1/i n t e r f a c e pour l e s t r u c s q u i r e s s e m b l e n t
2à de s t a b l e a u x /
3p u b l i c i n t e r f a c e Indexable <T> {
4int s i z e ( ) ;
5
6 T ge t ( int i ) ;
7
8void s e t ( int i , T v a l ) ;
9
10 void inverser ();
11 }
Ici, il serait possible d’écrire la méthode inverser sans faire référence à
une implémentation.
Serge Rosmorduc Java 8 2016-2017 3 / 27
Solution usuelle en java 7
On crée une classe abstraite pour ça :
1p u b l i c a b s t r a c t c l a s s A b s t r a c t I n d e x a b l e <T>
2implements I n d exable <T>{
3 @Override
4p u b l i c v oi d inverser () {
5int i= 0 ; int j= s i z e () 1 ;
6while ( i < j ) {
7 T tmp= get ( i ) ;
8 s e t ( i , g et ( j ) ) ;
9 s e t ( j , tmp ) ;
10 i ++;
11 j −−;
12 }
13 }
14 }
les classes concrètes peuvent alors, au choix
implémenter toutes les méthodes d’Indexable ;
étendre AbstractIndexable et profiter de l’implémentation
d’inverser.
Serge Rosmorduc Java 8 2016-2017 4 / 27
Méthodes par défaut
Pour diminuer cette nécessité d’utilisation d’une classe abstraite, java 8
introduit la notion de « méthode par défaut » dans une interface.
une interface peut contenir le corps d’une méthode (précédé de
default) ;
elle ne peut toujours pas contenir de variable d’instance (sinon, ce
serait une classe) ;
quand on implémente une telle interface, on n’est pas obligé de
réécrire les méthodes par défaut.
une classe peut implémenter plusieurs interfaces avec des méthodes
par défaut
s’il y a conflit (deux méthodes par défaut de même signature sont
héritées), elle doit les redéfinir ou c’est une erreur.
Serge Rosmorduc Java 8 2016-2017 5 / 27
1 / 28 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !