Problème de manipulation de "this"
Bonjour à tous,
Je suis actuellement étudiant en licence professionnelle informatique à Rodez, et pour les vacances on nous a donné un exercice pour remettre tout le monde à niveaux. Il s'agit de réinventer la roue et de développer la LinkedList de java. Enfin les principales méthodes comme l'ajout, la suppression etc.
Je trime depuis hier, et là j'en suis à la méthode qui ajoute en queue de liste.
Mon problème vient de l'utilisation de l'objet courant this lorsque je fais ceci:
Code:
1 2
| ListeDoublementChainee<E> nouveauChainon =
new ListeDoublementChainee<E>(aAjouter,null,this); |
je vais créer un nouvel objet mais je ne pourrais jamais passer à l'élément suivant (toujours à null).
Voilà le code entier du début de ma classe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| public class ListeDoublementChainee<E> implements Liste<E> {
/**
* Elément précédent initial par défaut
*/
private final static ListeDoublementChainee PRECEDENT_DEFAUT = null;
/**
* Elément suivant initial par défaut
*/
private final static ListeDoublementChainee SUIVANT_DEFAUT = null;
/**
* Element de la liste doublement chaînée
*/
private static Object element;
/**
* Référence vers l'élément précédent
*/
private ListeDoublementChainee<E> precedent;
/**
* Référence vers l'élément suivant
*/
private ListeDoublementChainee<E> suivant;
/**
* Initialise la liste doublement chaînée comme premier et dernier
* maillon de la chaîne
* => precedent = null
* => suivant = null
* Initialise le premier élément à null
*/
public ListeDoublementChainee(E elem) {
this(elem, PRECEDENT_DEFAUT, SUIVANT_DEFAUT);
}
private ListeDoublementChainee(E elem, ListeDoublementChainee<E> prec,
ListeDoublementChainee<E> suiv) {
element = elem;
precedent = prec;
suivant = suiv;
}
/**
* Permet de reculer d'un élément dans la liste
*/
private void precedent() {
if (precedent!=null) element = precedent;
}
/**
* Permet d'avancer d'un élément dans la liste
*/
public void suivant() {
if (suivant!=null) element = suivant;
}
/**
* Permet de se positionner sur le premier élément de la liste
*/
public void premierElement() {
while (precedent != null) {
precedent();
}
}
/**
* Ajoute l'élément en queue de liste
* @param aAjouter l'élément à ajouter
*/
public void ajoutEnQueue(E aAjouter) {
// création du nouveau chainon avec sa valeur aAjouter
ListeDoublementChainee<E> nouveauChainon =
new ListeDoublementChainee<E>(aAjouter,null,this);
// on se repositionne sur l'élément du début
suivant();
// precedent de l'élément courant prend la valeur du nouveau chainon
precedent = nouveauChainon;
}
} |
Voilà j'espère avoir été clair avec mon probème.
Merci d'avance!;)