J'ai une classe qui ressemble à ceci :
class Dao<T>{
...
}
Je veux le faire :
new Dao<Student>();
de la configuration de Spring XML.
Est-ce possible ? Comment ?
J'ai une classe qui ressemble à ceci :
class Dao<T>{
...
}
Je veux le faire :
new Dao<Student>();
de la configuration de Spring XML.
Est-ce possible ? Comment ?
Lire à propos de effacement de type devrait vous aider à comprendre un peu mieux.
Au moment de l'exécution, les paramètres de type d'une classe générique sont les suivants effacé . Autrement dit, comme l'a dit Cletus, les génériques en Java sont essentiellement du sucre syntaxique - ils ne sont qu'une fonctionnalité de compilation.
Puisque Spring instancie des objets à l'exécution, il est en fait libre d'instancier une Dao
de n'importe quel type - et en fait, rien ne l'empêche de créer une Dao
et en passant dans Student
dans certaines méthodes et Teacher
dans un autre.
Donc, en gros, la réponse est, Spring n'a aucune idée que le Dao
est destiné à être paramétré et on ne peut rien en faire.
Vous ne pouvez pas le faire et la raison pour laquelle vous ne pouvez pas le faire est que cela ne signifie rien en réalité. Je veux dire par là que les génériques Java sont du sucre syntaxique et que le type avec lequel vous créez un haricot n'est pas pertinent. Vous pouvez l'injecter dans n'importe quel objet prenant un Dao (ou Dao) sans problème, auquel cas il utilisera le casting implicite du type dans lequel il a été injecté.
Voir ceci post de forum . Vous pouvez en fait utiliser Dao comme classe de votre haricot, mais je ne sais pas si cela est satisfaisant pour vous.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.