bonjour,
j'ai créé une classe Liste
jusque là tout va bien,
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++; } }
le problème c'est que j'ai plusieurs thread qui parcours la liste en même temps
je dois donc créé un curseur
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
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 comme ca aucun probleme pour parcourir la liste meme si 2 objets differents la parcourent en meme temps
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 (); }
le problème, c'est queet
Code : Sélectionner tout - Visualiser dans une fenêtre à part curseur.getPremier ()me renvoient un Object et pas un Machin ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part curseur.getSuivant ()
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
Partager