Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
TestMan
Bonjour,
En java le transtypage classique "(MonType)" est dynamique (effectué/vérifié à l'exécution) et provoque le cas échéant un ClassCastException.
La généricité en Java fonctione par "effacement" (erasure), en clair, Il n'y a au niveau bytecode pas de différence entre List et List<String> par exemple ! D'où le fait que les performances soit complètement identiques (et donc qu'il ne faille pas s'en priver !!!).
En plus, des performances ce choix d'implémentation à pour avantage d'être compatible au niveau binnaire avec l'ensemble des librairies existantes (pas besoin de recompiler toutes les bibliothèques, et donc pas besoin de disposer des sources).
Les limites de cette implementation sont que l'on ne peux pas connaitre à l'exécution la classe du ou des types paramétrés (mais simplement leurs contraintes exprimées, par exemple : T dérive de Truc ...). Celà oblige donc à stocker une référence à la meta-classe exacte s'il on a des besoins d'instrospection avancées. Mais ce besoin est plutôt rare pour un developpeur classique (lire "ne developpant pas de framework").
Pour en connatre plus sur les fonctionalités avancés de la généricité en Java, lire par exemple : http://www.gafter.com/~neal/2004-Wildcards.ppt
A+
TM
Bonjour, le class cast est normalement dynamique, au contraire, la généricité peut etre gérée statiquement ou dynamiquement je crois savoir.
En java, la généricité est exploitée comment ? Quelles en sont les performances et les limites par rapport à d'autres solutions ?
Merci !
Bonjour,
En java le transtypage classique "(MonType)" est dynamique
(effectué/vérifié à l'exécution) et provoque le cas échéant un
ClassCastException.
La généricité en Java fonctione par "effacement" (erasure), en clair,
Il n'y a au niveau bytecode pas de différence entre List et List<String>
par exemple ! D'où le fait que les performances soit complètement
identiques (et donc qu'il ne faille pas s'en priver !!!).
En plus, des performances ce choix d'implémentation à pour avantage
d'être compatible au niveau binnaire avec l'ensemble des librairies
existantes (pas besoin de recompiler toutes les bibliothèques, et donc
pas besoin de disposer des sources).
Les limites de cette implementation sont que l'on ne peux pas connaitre
à l'exécution la classe du ou des types paramétrés (mais simplement
leurs contraintes exprimées, par exemple : T dérive de Truc ...). Celà
oblige donc à stocker une référence à la meta-classe exacte s'il on a
des besoins d'instrospection avancées. Mais ce besoin est plutôt rare
pour un developpeur classique (lire "ne developpant pas de framework").
Pour en connatre plus sur les fonctionalités avancés de la généricité en
Java, lire par exemple :
http://www.gafter.com/~neal/2004-Wildcards.ppt
A+
TM
Bonjour, le class cast est normalement dynamique, au contraire, la
généricité peut etre gérée statiquement ou dynamiquement je crois savoir.
En java, la généricité est exploitée comment ? Quelles en sont les
performances et les limites par rapport à d'autres solutions ?
En java le transtypage classique "(MonType)" est dynamique (effectué/vérifié à l'exécution) et provoque le cas échéant un ClassCastException.
La généricité en Java fonctione par "effacement" (erasure), en clair, Il n'y a au niveau bytecode pas de différence entre List et List<String> par exemple ! D'où le fait que les performances soit complètement identiques (et donc qu'il ne faille pas s'en priver !!!).
En plus, des performances ce choix d'implémentation à pour avantage d'être compatible au niveau binnaire avec l'ensemble des librairies existantes (pas besoin de recompiler toutes les bibliothèques, et donc pas besoin de disposer des sources).
Les limites de cette implementation sont que l'on ne peux pas connaitre à l'exécution la classe du ou des types paramétrés (mais simplement leurs contraintes exprimées, par exemple : T dérive de Truc ...). Celà oblige donc à stocker une référence à la meta-classe exacte s'il on a des besoins d'instrospection avancées. Mais ce besoin est plutôt rare pour un developpeur classique (lire "ne developpant pas de framework").
Pour en connatre plus sur les fonctionalités avancés de la généricité en Java, lire par exemple : http://www.gafter.com/~neal/2004-Wildcards.ppt
A+
TM
Bonjour, le class cast est normalement dynamique, au contraire, la généricité peut etre gérée statiquement ou dynamiquement je crois savoir.
En java, la généricité est exploitée comment ? Quelles en sont les performances et les limites par rapport à d'autres solutions ?