17 votes

Méthode générique dans une classe non générique

Je cherche à utiliser une méthode générique pour ne pas avoir à répéter du code. J'ai essayé :

private Listener createListenerAdapter(Class clazz)
{ 
   // faire quelque chose
}

(clazz étant important car class est réservé).

Mais Netbeans se plaint que : "Impossible de trouver le symbole de la classe T".

Je vais passer quelques classes différentes qui ont les mêmes méthodes. Où suis-je censé définir T?

37voto

Paul Bellora Points 26524

Déclarez la méthode comme:

private  Listener createListenerAdapter(Class clazz)

Consultez les tutoriels Java pour plus d'informations.

Éditer: Si T n'est pas lié au type de retour, vous pouvez également utiliser un joker:

private Listener createListenerAdapter(Class clazz)

Éditer 1: Si clazz est censé représenter un type de Listener, vous pouvez définir des limites pour restreindre l'appelant (pour éviter les conversions et les exceptions d'exécution potentielles):

private  L createListenerAdapter(Class clazz)

Ou avec le joker:

private Listener createListenerAdapter(Class clazz)

Mais cela dépend de l'utilisation de clazz dans le corps.

4voto

Gamb Points 6251

Les déclarations génériques peuvent également être faites au niveau de la méthode en les paramétrant comme ceci :

private  Listener createListenerAdapter(Class clazz)
{ 
   // faire quelque chose
}

0voto

Bohemian Points 134107

Si vous n'utilisez pas le type (improbable, mais vous pourriez essayer d'éviter un avertissement de type brut) :

private Listener createListenerAdapter(Class clazz)
{ 
   // do something, without knowing the T of the clazz
}

Prograide.com

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.

Powered by:

X