OK je vois ...
C++ : le type template n'existe pas vraiment au runtime ...
Java : la classe generique est un vrai type, y compris au runtime
Par contre, le fait de creer une classe generique qui prend un fait un Object au runtime a son pour et son contre :
Pour : Une seule classe creee
Contre : implique de rajouter des casts de facon automatique alors que le type check a prouve qu'il n'y en avais pas besoin ... Bizarre ...
Rajouter des contraintes sur les types parametriques a l'aide du mot clef "implements", c'est assez marrant, c'est la solution qu'on a retenu pour Nosica il y a plus de deux ans ...
Sinon, je suis assez content de voir que ce qu'ils appellent la bonne methode (vrai type, contraintes sur les types) c'est ce qu'on a implemente en Nosica des le depart ... Sauf qu'on cree N vrai types a partir d'un type generique, du coup on peut optimiser chaque version independemment des autres versions, et surtout avoir une version type safe a la compilation et au runtime.
On peut aussi compiler integralement une class generique sans qu'elle soit utilisee ...
[^] # Re: Pour rentrer dans les details
Posté par Epsos . En réponse à la dépêche Java Virtual Machine 1.4.2 beta. Évalué à 1.
C++ : le type template n'existe pas vraiment au runtime ...
Java : la classe generique est un vrai type, y compris au runtime
Par contre, le fait de creer une classe generique qui prend un fait un Object au runtime a son pour et son contre :
Pour : Une seule classe creee
Contre : implique de rajouter des casts de facon automatique alors que le type check a prouve qu'il n'y en avais pas besoin ... Bizarre ...
Rajouter des contraintes sur les types parametriques a l'aide du mot clef "implements", c'est assez marrant, c'est la solution qu'on a retenu pour Nosica il y a plus de deux ans ...
Sinon, je suis assez content de voir que ce qu'ils appellent la bonne methode (vrai type, contraintes sur les types) c'est ce qu'on a implemente en Nosica des le depart ... Sauf qu'on cree N vrai types a partir d'un type generique, du coup on peut optimiser chaque version independemment des autres versions, et surtout avoir une version type safe a la compilation et au runtime.
On peut aussi compiler integralement une class generique sans qu'elle soit utilisee ...
Content !! :-)