Bonjour,
Je suis en présence de code que je cherche à simplifier (c'est un « test case »).
J'ai les 2 classes suivantes A et B :
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public class A { private String ma1; private String ma2; private String ma3; private String m1; private String m2; private String m3; public String getMa1() { return ma1; } public void setMa1(String ma1) { this.ma1 = ma1; } public String getMa2() { return ma2; } public void setMa2(String ma2) { this.ma2 = ma2; } public String getMa3() { return ma3; } public void setMa3(String ma3) { this.ma3 = ma3; } public String getM1() { return m1; } public void setM1(String m1) { this.m1 = m1; } public String getM2() { return m2; } public void setM2(String m2) { this.m2 = m2; } public String getM3() { return m3; } public void setM3(String m3) { this.m3 = m3; } @Override public String toString() { return "A [ma1=" + ma1 + ", ma2=" + ma2 + ", ma3=" + ma3 + ", m1=" + m1 + ", m2=" + m2 + ", m3=" + m3 + "]"; } }On remarquera que les 2 classes ont 3 membres ayant le même nom (m1, m2, m3).
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public class B { private String mb1; private String mb2; private String mb3; private String m1; private String m2; private String m3; public String getMb1() { return mb1; } public void setMb1(String mb1) { this.mb1 = mb1; } public String getMb2() { return mb2; } public void setMb2(String mb2) { this.mb2 = mb2; } public String getMb3() { return mb3; } public void setMb3(String mb3) { this.mb3 = mb3; } public String getM1() { return m1; } public void setM1(String m1) { this.m1 = m1; } public String getM2() { return m2; } public void setM2(String m2) { this.m2 = m2; } public String getM3() { return m3; } public void setM3(String m3) { this.m3 = m3; } @Override public String toString() { return "B [mb1=" + mb1 + ", mb2=" + mb2 + ", mb3=" + mb3 + ", m1=" + m1 + ", m2=" + m2 + ", m3=" + m3 + "]"; } }
Et voici schématisé le programme principale :
qui me retourne cela:
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 public class App1 { public static void main(String[] args) { A a = new A(); a.setMa1("aaa111"); a.setMa2("aaa222"); a.setMa3("aaa333"); mapRow(a); System.out.println("a: " + a.toString()); B b = new B(); b.setMb1("bbb111"); b.setMb2("bbb222"); b.setMb3("bbb333"); mapRow(b); System.out.println("b: " + b.toString()); } private static void mapRow(A obj) { obj.setM1("ccc111"); obj.setM2("ccc222"); obj.setM3("ccc333"); } private static void mapRow(B obj) { obj.setM1("ccc111"); obj.setM2("ccc222"); obj.setM3("ccc333"); } }
Le problème consiste à valoriser les membres (m1, m2, m3) par la même méthode en utilisant par exemple la généricité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 a: A [ma1=aaa111, ma2=aaa222, ma3=aaa333, m1=ccc111, m2=ccc222, m3=ccc333] b: B [mb1=bbb111, mb2=bbb222, mb3=bbb333, m1=ccc111, m2=ccc222, m3=ccc333]
Est-ce possible ?
Par exemple comme ça (cela ne fonctionne pas bien sur !) :
Quelqu'un peut-il m'aider svp ?
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 public class App2 { public static void main(String[] args) { A a = new A(); a.setMa1("aaa111"); a.setMa2("aaa222"); a.setMa3("aaa333"); mapRow(a); System.out.println("a: " + a.toString()); B b = new B(); b.setMb1("bbb111"); b.setMb2("bbb222"); b.setMb3("bbb333"); mapRow(b); System.out.println("b: " + b.toString()); } private static <T> void mapRow(T obj) { obj.setM1("ccc111"); obj.setM2("ccc222"); obj.setM3("ccc333"); } }
Merci.
Partager