Réflexion et types génériques en Java

Slides:



Advertisements
Présentations similaires
Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Advertisements

Simulation d’un réseau avec correspondances
C#3 et le projet Linq Mitsuru FURUTA
C# 2.0, un an après Mitsuru FURUTA
JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
Approfondissement du Java
La machine virtuelle virtuelle utopie et/ou réalité ?
Spécialisation/généralisation Héritage Polymorphisme.
Introspection et Réflexion Manipulation dynamique de code Java.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de.
Au programme du jour …. Un peu plus de structures de données
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Java et la réflexivité.
Java et la réflexivité. Java reflection is useful because it supports dynamic retrieval of information about classes and data structures by name, and.
Au programme du jour …. Livraison de code Organisation des répertoires et packages Ce que vous navez pas encore vraiment vu Constantes et variables de.
Architecture CORBA réseau Objet Corba Application Serveur
Java et la réflexivité. Java reflection is useful because it supports dynamic retrieval of information about classes and data structures by name, and.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Appels de fonctions natives sous C#
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
Conception de Programmes Evolutifs
Paquetages: Définitions Les classes Java sont regroupées en paquetages (packages en anglais) Ils correspondent aux « bibliothèques » des autres langages.
Approfondissement du langage
JAV - TD 6 Structures de données JAVA
Leçon 3 : Héritage IUP 2 Génie Informatique
Principes de programmation (suite)
Structures collectives en Java
Programmation orientée objet
1 Cours JAVA / Y.Laborde Java : Les types génériques ( ) LES TYPES GENERIQUES : Introduction (diapo 2) Déclaration dun type générique (3) 1re déclaration.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Interfaces : comment classifier ?
À travailler seuls Concepts généraux Mise en œuvre Java Année
Structures de données IFT-10541
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
CSI 1502 Principes fondamentaux de conception de logiciels
DataBinding avancé Mitsuru FURUTA, relations techniques développeurs –
Programmation Orientée Aspect sur le Framework .net
Les assertions en Java.
BOUSQUET Alexis - GUILLEMIN Vincent - PETIT Cédric
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Tutorat en bio-informatique
Programme d’étude de séries temporelles
ISBN Chapitre 10 L'implémentation des sous- programmes.
MOCK.
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Les objets de la classe de classe. Qu'est-ce que c'est? C'est...
Généricité.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
TD8 : Étude d’un service de collecte de données Par la FALCON TEAM.
Java Remote Method Invocation
1 Web App Pourquoi une Web App au lieu d’une application native? 26 janvier 2012  Créer une application universelle  Durée de vie « infinie »  Plus.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
Framework de reconstruction et d’analyse pour Micromegas Jean Jacquemier 27 janvier 2008.
SYSTEM PROGRAM.
Transcription de la présentation:

Réflexion et types génériques en Java Aladyn 9 Novembre 2007

PLAN Approches. Implémentation de la généricité. Modifications de l’API reflection en JAVA 5. C#: Une autre solution.

Approche1: obtenir un objet Class Java 1.4 Javac -Xlint Java 5

Approche 2: L’instantiation d’un paramètre est impossible B non évaluable NullPointerException

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

Type erasure: où pourquoi tout disparait Variable de type Plus grande borne ou Object Type paramètre Type régulier avant après

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()

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

ajout sécurisé 2: Type est statique [33,56] Même redondance: Type ne peut être utilisé en dynamique

.NET: un framework reflexif FieldInfo getFields() GetModules() GetTypes() Type Assembly Module GetMethods() MethodeInfo GetConstructor() Constructor Info

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

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.