IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Présentation du langage NICE


précédentsommairesuivant

II. Java 5 vu par Nice

Comme cela a été dit précédemment, Nice dispose déjà des principales fonctionnalités annoncées pour Java 5. Le but des paragraphes suivants est donc d'évoquer certaines de ces fonctionnalités et de les illustrer par du code Java 5 et Nice.

II-A. La généricité

L'utilisation de classes génériques (ou encore nommées classes paramétrables) s'avère extrêmement utile et appréciée sur de nombreux points. En effet, le code sera plus agréable à lire et à maintenir, les risques d'erreur ou d'oubli dans les conversions puisqu'elles sont faites automatiquement. Enfin, cela favorise la réutilisation de composants, et permettra au développeur de se concentrer sur les objets métier.

Voyons sur un petit exemple (Langage sera une classe métier par exemple) à quel point la généricité peut rendre service :

Avec Java 1.4

 
Sélectionnez
ArrayList al = new ArrayList(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice")); // on pourrait très bien passer un autre type d'objet à la méthode add

for(Iterator i = al.iterator(); i.hasNext();) // clause for plutôt "lourde"
{ 
  Langage l = (Langage) i.next(); 
  /* on récupère l'objet avec transtypage obligatoire et risque d'erreur 
  si l'objet n'est pas du type Langage ... */
  System.out.println(l); // affichage de la valeur de l.toString(); 
}

Avec Java 5

 
Sélectionnez
ArrayList<Langage> al = new ArrayList<Langage>(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice")); // on ne peut plus passer d'objet d'un autre type

for(Iterator i = al.iterator(); i.hasNext();) 
// nous verrons plus loin que d'autres nouveautés Java 5 vont améliorer le parcours
{ 
  Langage l = (Langage) i.next();
  System.out.println(l);
}

Ce dernier code fonctionne parfaitement avec Nice, mais je vous propose dès à présent un avant-goût des possibilités de Nice sur cet exemple (l'ensemble des autres particularités sera vu au chapitre suivant).

II-B. Les optimisations

II-B-1. Boucle for

Les nouveautés de Java 5 concernent également les boucles de parcours d'ensembles (collections et tableaux). Reprenons l'exemple précédent pour illustrer cette fonctionnalité.

Avec Java 5

 
Sélectionnez
ArrayList<Langage> al = new ArrayList<Langage>(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice"));

for(Langage l : al)
{
  System.out.println(l);
}

Les possibilités d'utilisation ne sont bien entendu pas limitées qu'aux collections et tableaux. Cela est possible pour toute classe implémentant l'interface Iterable.

 
Sélectionnez
for(Type Identifier : Expression) // Expression doit implémenter Iterable

Nice n'est pas en reste. Il fait même mieux qu'un opérateur for évolué, il propose la méthode foreach.

Avec Nice

 
Sélectionnez
ArrayList<Langage> al = new ArrayList(); 
al.add(new Langage("Java"));
al.add(new Langage("Nice"));
al.foreach(Langage l => System.out.println(l));

Nous reviendrons plus loin sur la méthode foreach et sur les fonctionnalités qui se cachent derrière. Je vous laisse constater la puissance et la simplicité de cette méthode qui permet à la fois de parcourir un ensemble et de faire un traitement sur chaque élément.

II-B-2. L'autoboxing

Qui n'a jamais trouvé la conversion d'un objet d'un type enveloppe vers le type non objet correspondant (et vice versa) particulièrement lourde ? Bien heureusement, Java 5 permet de se passer de telles conversions.
Voici un petit exemple pour illustrer ceci :

Avec Java 1.4

 
Sélectionnez
ArrayList al = new ArrayList();
al.add(0, new Double(1.4)); 
double version = ((Double) al.get(0)).doubleValue();

Avec Java 5

 
Sélectionnez
ArrayList<Double> al = new ArrayList<Double>();
al.add(0,1.5);
double version = al.get(0);

précédentsommairesuivant

Copyright © 2004 Ricky81. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.