Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Réflexion et types génériques en Java
Aladyn 9 Novembre 2007
2
PLAN Approches. Implémentation de la généricité.
Modifications de l’API reflection en JAVA 5. C#: Une autre solution.
3
Approche1: obtenir un objet Class
Java 1.4 Javac -Xlint Java 5
4
Approche 2: L’instantiation d’un paramètre est impossible
B non évaluable NullPointerException
5
Approche 3: deux problèmes apparents
1. Les listes l1 et l2 partagent le même code 2. L’appel dynamique contourne la paramétrisation
6
Type erasure: où pourquoi tout disparait
Variable de type Plus grande borne ou Object Type paramètre Type régulier avant après
7
Nouveauté de l’API 1.5: l’interface Type
java.lang java.lang.reflect GenericDeclaration getTypeParameters() Type Class<T> getTypeParameters() getGenericType() … ParameterizedType getActualTypeArguments() getOwnerType() getRawType() TypeVariable getBounds() getGenericDeclaration() getName() WildcardType getLowerBounds() getUpperBounds() GenericArrayType getGenericComponentType()
8
Utilisation d’objets Type: pour l’ajout sécurisé ?
Java.util.ArrayList E Java.util.List<T> T Renseignement redondant non récupérable depuis types
9
ajout sécurisé 2: Type est statique
[33,56] Même redondance: Type ne peut être utilisé en dynamique
10
.NET: un framework reflexif
FieldInfo getFields() GetModules() GetTypes() Type Assembly Module GetMethods() MethodeInfo GetConstructor() Constructor Info
11
C# : génériques ouverts/fermés
Assemblage: une seule classe générique Compilateur C# Program List<T> Exécution: Plusieurs classes génériques List<T> Program List<int> List<bool> List<double> Compilateur JIT
12
Conclusion 1.5 = 1.6 Généricité: un vrai changement, compatibilité croissante conservée. Utilisation statique des objets Type (analyseur de type). En .NET, une instanciation par paramètre générique.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.