Java.lang.StackOverflowError avc eclipse

Bonsoir j au eu un petit problème dans mon code java , je travaille avec l IDE eclipse et des que je lance l exécution voila l erreur kil m affiche

Exception in thread "main" java.lang.StackOverflowError
at pack3.cellule.<init>(cellule.java:8)

je précise kil s agit d une erreur dans ma classe cellule sur la ligne 8,voila le petit bout de code qui fait erreur :

package pack3;

public class cellule {
private cellule suivante ;
private int contenu;
public cellule()// créer une cellule et initialiser
// son contenu a 0 et son pointeur svt a null
{cellule c =new cellule();
c.suivante=null;
c.contenu=0;

}

je vous remercie d avance

2 réponses

  1. Ton problème vient effectivement de là :
    t'as un appel récursif sur le constructeur de cellule, et un moment, ca "déborde" et génère un StackOverflow
    0
    1. Contributeur
      Euh juste une question pourquoi tu appelles une cellule dans une autre cellule?

      parce que je suppose que dans un code extérieur tu fais un cellule pipo = new cellule();

      Donc à quoi te sers dans ton constructeur de mettre cellule c =new cellule(); ?

      Donc je verrais la classe cellule comme :

      package pack3;
      
      public class cellule {
      private cellule suivante ;
      private int contenu;
      public cellule()// créer une cellule et initialiser
      // son contenu a 0 et son pointeur svt a null
      {
              suivante=null;
              c.contenu=0;
      } 
      


      Ensuite voit si ton problème se pose toujours.
      1
      1. ben g fait s que tu ma suggérer mais le problème persiste toujours ,euhhh juste une autre question on exécute ainsi run ---> run as --->java application ?? c comme sa ??
        0
      2. Contributeur
        Oui comme ça.

        Tu pourrais donner le code qui accède à ta fonction cellule?

        Hormis ça sinon je vois pas ce qui pourrait causer le StackOverFlow, à moins que ton code externe qui appelle la classe cause lui le problème.

        PS : Bien vu JeanGilles, en effet je pense que le problème vient de là aussi, je viens d'y penser, on appelle la classe Cellule, qui elle même s'appelle, donc appel à la même classe qui s'appelle à l'infini, c'est sur que le StackOverFlow il est pas loin ...
        0
      3. voila le code ki appelle cette fction
        package pack3;

        public class liste extends cellule {

        private cellule debut;
        private int taille;
        public liste ()
        {//cree une liste vide
        debut=null;
        taille=0;

        }
        public liste (cellule c)//cree 1 liste contenant c en tete
        {
        this.debut = c;
        this.taille++;

        }
        public boolean isEmpty()
        {
        return debut==null;
        }
        public cellule getFirst() {
        return this.debut;
        }
        public void addFirst(int elem)//insere une cellule de elem
        {
        cellule c= new cellule(elem,this.debut);
        this.taille++;

        }
        je vous remercie
        0
      4. Contributeur
        Je pense d'après ton code que tu essaies de faire des listes chaînées, hors en Java la notion de pointeur n'existe pas comme en C++ par exemple.

        Expose nous plutôt ce que tu veux faire, mais à mon avis je pense ne pas en être loin.
        0