Implémentation type générique - Java - Programmation
Marsh Posté le 04-12-2008 à 16:10:45
J'aurais tendance à les mettre dans la classe Ensemble perso. Ou alors dans une classe statique "Ensembles" qui contient ces fonctions, mais bon...
Mais dans tous les cas, ton problème est dans la définition de ta méthode statique: il faut lui donner la valeur pour le type générique T, et pour ce faire il te faut ajouter un paramètre générique comme montré dans generic methods and constructors:
Code :
|
le <T> seul étant le paramètre générique pour ta méthode.
Ensuite à l'utilisation, tu peux fournir le type explicitement:
Code :
|
ou alors laisser le compilo inférer le type (pour du code aussi simple, il est habituellement capable de se débrouiller):
Code :
|
Marsh Posté le 04-12-2008 à 16:55:09
En fait, avec
public static <T> Ensemble<T> union ( Ensemble<T> EnsA, Ensemble<T> EnsB )
que je rajoute donc dans ma classe ListeChainee, j'ai une nouvelle erreur pour les 3 derniers <T>:
Bound mismatch: The type T is not a valide substitute for the bounded parameter <T extends Comparable<T>> of the type Ensemble<T>
Je comprends pas, j'ai pas eu de problème dans des utilisation similaires des types génériques dans d'autres codes.
Marsh Posté le 04-12-2008 à 17:06:44
divx-boy a écrit : que je rajoute donc dans ma classe ListeChainee |
Pourquoi?
Quel est le rapport entre une union d'ensembles et une liste chainée?
divx-boy a écrit : Bound mismatch: The type T is not a valide substitute for the bounded parameter <T extends Comparable<T>> of the type Ensemble<T> |
Ensemble est défini comment?
Marsh Posté le 04-12-2008 à 17:09:34
Au temps pour moi je voulais parler de la classe "Ensemble"
Et ensemble est défini comme ceci:
Citation : |
Marsh Posté le 04-12-2008 à 17:20:39
Ben c'est logique dans ce cas, il faut sûrement que le T de la méthode soit un sous-ensemble du T d'Ensemble, donc il faut probablement
Code :
|
Marsh Posté le 04-12-2008 à 15:48:14
Bonjour, j'ai un petit souci avec l'implémentation d'un type générique.
J'ai un type générique "Chainon<T>" avec lequel j'ai réalisé, dans une autre classe, l'implémentation du type "ListeChainee<T>". Avec ce dernier type, j'implémente un type "Ensemble<T>". Il est maintenant demandé, après avoir codé toutes les méthodes de la classe Ensemble, de réaliser sous formes de fonctions, et non de méthodes, les opérations ensemblistes classiques (union, intersection, différence). Ces fonctions devront retourner des ensembles.
Question, je sais pas où placer le code de ces fonctions. Dans la classe listeChainee? Dans le programme annexe qui teste la classe?
public static Ensemble<T> union ( Ensemble<T> EnsA, Ensemble<T> EnsB ) {
/*
* code
*/
}
A chaque fois le problème porte sur <T>
Dans le premier cas :
erreur: cannot make a static reference to a non-static type
Dans le deuxieme cas:
erreur: T cannot be resolved to a type
Quelqu'un pourrait-il m'éclairer ?