bonjour,

j'ai créé une classe Liste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
public class Liste<Template>
	{
	protected class Element
		{
		protected Template element = null;
		protected Element suivant = null;
 
		public Element (Template e)
			{
			element = e;
			suivant = null;
			}
		}
 
	protected Element premier = null;
	protected Element dernier = null;
 
	protected int quantite = 0;
 
	public int getQuantite ()
		{
		return quantite;
		}
 
	public void add (Template nouveau)
		{
		if (nouveau == null)
			return;
 
		Element elem = new Element (nouveau);
 
		if (dernier != null)
			dernier.suivant = elem;
		else
			premier = elem;
 
		dernier = elem;
 
		quantite++;
		}
       }
jusque là tout va bien,

le problème c'est que j'ai plusieurs thread qui parcours la liste en même temps

je dois donc créé un curseur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
public class ListeCurseur<Template>
	{
         ...
 
	public class Curseur
		{
		protected Element premier;
		protected Element temp;
 
		private Curseur (Element premier)
			{
			this.premier = premier;
			this.temp = null;
			}
 
		public Template getPremier ()
			{
			temp = premier;
 
			if (temp != null)
				return temp.element;
			else
				return null;
			}
 
		public Template getSuivant ()
			{
			if (temp == null)
				return null;
 
			temp = temp.suivant;
 
			if (temp == null)
				return null;
 
			return temp.element;
			}
		}
 
	public Curseur getCurseur ()
		{
		return new Curseur (premier);
		}
        }
et donc avec cette methode, il ne reste plus qu'a faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
	public void une_fonction ()
		{
		Liste<Machin> liste = new Liste<Machin> ();
 
		liste.add (new Machin ());
		liste.add (new Machin ());
		liste.add (new Machin ());
		liste.add (new Machin ());
 
		Curseur curseur = liste.getCurseur ();
 
		for (Machin machin = curseur.getPremier ();machin != null; machin = curseur.getSuivant ())
			machin.fait_un_truc ();
		}
et comme ca aucun probleme pour parcourir la liste meme si 2 objets differents la parcourent en meme temps

le problème, c'est que et me renvoient un Object et pas un Machin ....

si j'utilise le curseur au sein de la classe Liste ca passe, mais si je l'utilise dans une autre classe ca passe pas ...

qu'est ce qui cloche ? que dois-je faire ?

merci de vos reponses