Classe avec généricité n'accepte pas les int
delfre56
Messages postés
404
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'essaie, pour un cours de java, de créer une classe ArrayCollection en utilisant la généricité. Le but est de pouvoir créer des tableaux de tous types. Voilà (une partie de) mon code :
Sauf que quand j'essaie de l'instancier avec comme type int, ça ne fonctionne pas : "unexpected type recquired : reference found : int"
Voilà, je galère là dessus et je ne peux pas avancer plus loin sans avoir résolu ça. Merci de m'aider :)
j'essaie, pour un cours de java, de créer une classe ArrayCollection en utilisant la généricité. Le but est de pouvoir créer des tableaux de tous types. Voilà (une partie de) mon code :
public class ArrayCollection<E> implements collection.OrderedCollection<E> {
/**
* Taille du tableau
*/
int size;
/**
* Tableau
*/
E array[];
/**
* Constructeur
* @param int size la taille du tableau
*/
public ArrayCollection(int size) throws Exception{
this.size = size;
try{
array = newArray(size);
}catch (IllegalArgumentException e){
System.out.println("Erreur lors de la création du tableau");
}
}
/**
* Crée un nouveau tableau
* @param size taille du tableau
* @return Un tableau d'éléments de type E
*/
@SuppressWarnings("unchecked")
private E[] newArray(int size) throws Exception{
if(size<=0) {
throw new IllegalArgumentException("size("+size+")<=0");
}
return (E[])(new Object[size]);
}
Sauf que quand j'essaie de l'instancier avec comme type int, ça ne fonctionne pas : "unexpected type recquired : reference found : int"
Voilà, je galère là dessus et je ne peux pas avancer plus loin sans avoir résolu ça. Merci de m'aider :)
A voir également:
- Classe avec généricité n'accepte pas les int
- Il n'a pas accepté mon invitation facebook - Guide
- Le périphérique ou la ressource distant n'accepte pas la connexion ✓ - Forum Réseau
- Site qui accepte paysafecard - Forum Consommation & Internet
- Ouvrez cette page. dans le code de la page, modifiez la couleur de fond de la classe .pix. un code de 4 chiffres doit apparaître dans la grille. lequel ? ✓ - Forum Programmation
- Classe ram - Guide
2 réponses
Bonjour,
Comme indiqué par Dafalb, les types génériques doivent forcément être des objets. Il faut donc utiliser Integer à la place de int.
De plus ceci ne fonctionnera pas :
Tu peux éventuellement caster un Object en E, mais ça ne fonctionne pas avec les tableaux.
Enfin, il n'y a pas d'intérêt à faire un
Laisse cette exception, mais enlèves le try/catch, ainsi que les
La confiance n'exclut pas le contrôle
Comme indiqué par Dafalb, les types génériques doivent forcément être des objets. Il faut donc utiliser Integer à la place de int.
De plus ceci ne fonctionnera pas :
(E[])(new Object[size]);
Tu peux éventuellement caster un Object en E, mais ça ne fonctionne pas avec les tableaux.
Enfin, il n'y a pas d'intérêt à faire un
throw new IllegalArgumentExceptiondans ta méthode privée si derrière tu fais un
try catchdans le constructeur...
Laisse cette exception, mais enlèves le try/catch, ainsi que les
throws Exception(on ne devrait jamais avoir ce genre de throws...)
La confiance n'exclut pas le contrôle