Classe avec généricité n'accepte pas les int
delfre56
Messages postés
350
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
- Votre paiement n'est pas accepté par votre banque winamax - Forum Loisirs / Divertissements
- Le périphérique ou la ressource distant n'accepte pas la connexion ✓ - Forum Réseau
- Int input python - Forum Python
- Samira a modifié le menu du jour que juliette lui avait envoyé. retrouvez les modifications proposées par samira : acceptez celles concernant les entrées, refusez celles concernant les plats et les desserts. combien de caractères (en incluant les espaces) contient la version finale du menu ? - Forum Matériel & Système
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