Bonjour, j'ai le code suivant qui n'est pas générique
Je souhaiterais rendre le code générique afin d'éviter le cast ((SousB)monB).dansSousB();
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 class A { protected B monB; } class B { protected A monA; } class SousA extends A { public SousA(SousB b){ this.monB = b; } public void doIt(){ ((SousB)monB).dansSousB(); } public void dansSousA(){ // .... }; } class SousB extends B { public SousB(SousA a){ this.monA = a; } public void dansSousB(){ // .... }; }
j'ai essayé ceci
ça fonctionne mais j'ai deux warning sur les classes parentes :
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 class A <T extends B>{ protected T monB; } class B <T extends A>{ protected T monA; } class SousA extends A<SousB> { public SousA(SousB b){ this.monB = b; } public void doIt(){ monB.dansSousB(); } public void dansSousA(){ // .... }; } class SousB extends B<SousA> { public SousB(SousA a){ this.monA = a; } public void dansSousB(){ // .... }; }
class A <T extends B>
class B <T extends A>
Le warning est : A is a raw type. References to generic type A<T> should be parameterized et B is a raw type. References to generic type B<T> should be parameterized
Quelle est la solution pour ne pas tourner en rond (à cause de la bi-directionalité) ? Un SuppressWarning n'est pas conseillé au niveau de la classe...
Merci !
Partager