Java cours

6444 mots 26 pages
Java Avancé

Types paramétrés
Rémi Forax forax@univ-mlv.fr 1

Type paramétré




Exemple : une liste d'éléments paramétrée par le type des éléments
Déclaration
public class List<T> {
...
}

T est une variable de type.


Utilisation (appelé aussi instantiation)
...
public static void main(String[] args) {
List<String> l=...
}

2

Type paramétré et Java 1.4


En Java sans type paramétré, on crée une liste d'Object. public class List/*<T>*/ { void add(/*T*/Object e) {...}
Object/*T*/ get(int index) {...}
}



Comme tous les objets héritent de Object :
...
public static void main(String[] args) {
List/*<String>*/ l=new List/*<String>*/();
l.add("toto");
// ok grace au sous typage
String s=l.get(0);
// erreur
String s2=(String)l.get(0); // ok
}



C'est au programmeur de faire le cast
3

Le problème fréquent


Comme on utilise une liste d'Object, le compilateur accepte n'importe quel objet
...
public static void main(String[] args) {
List/*<String>*/ l=new List/*<String>*/();
l.add("toto");
// ok grace au sous typage
l.add(new Date());
// ok grace au sous typage

}


for(Object o:l) {
System.out.println((String)o); // ClassCastException
}

Ce programme compile mais plante à l'exécution

4

Le besoin de type paramétré




Comme on utilise Object comme type, il est difficile d'avoir un code :


Générique
(ne pas ré-écrire le code pour la liste de torchon, de serviette, de ...)



ET statiquement typé
(vérifiable par le compilateur)

Solution : permettre réellement les types paramétrés 5

Template en C++


Définition & Instantiation :





Lors de l'édition de lien, on instantie les templates et effectue la vérification. Pour :




On définit du code à trous (non vérifié)

permet la spécialisation de code

Contre :


recompilation de chaque instantiation



explosion du code en taille



code peu sûr

6

Generics en C#




Définition & Instantiation :


Le code du generics est vérifier lors de sa définition



le compilateur génére un code

en relation

  • Travail de fin d'etude chatbot
    12265 mots | 50 pages
  • ALGO
    3769 mots | 16 pages
  • SUP DS2
    1995 mots | 8 pages
  • Montaigne
    350 mots | 2 pages
  • fiche bilan muc vente
    844 mots | 4 pages
  • rtytryrty
    678 mots | 3 pages
  • rapport de stage developpeur jeu vidéo
    3180 mots | 13 pages
  • Cours POW JS
    8023 mots | 33 pages
  • Le droit des affaires de prête-t-il à une codification ?
    2751 mots | 12 pages
  • Test
    1127 mots | 5 pages
  • Histoire des sources du droit
    19676 mots | 79 pages
  • Les objectifs de la codification
    1212 mots | 5 pages
  • Cours giono
    1039 mots | 5 pages
  • la 4' république
    4586 mots | 19 pages
  • Histoire du droit
    1301 mots | 6 pages