Bonjour, débutant en java j'ai un souci avec mes classes lorsque j'implante par agrégation ma classe enfant sur ma classe Salarié.
Classe SALARIE
Classe ENFANT
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 public class Salarie { private static int compteur = 0; protected int matricule; protected int categorie; protected int service; protected String nom; protected double salaire; private Vector listeEnfants = new Vector (); private Adresse adrSal = new Adresse(); public Salarie(int inMatricule, int inCategorie, int inService, String inNom, double inSalaire) throws SalaireException, CategorieException { compteur++; if (inSalaire < 0) throw new SalaireException(inSalaire); if ((inCategorie != 1)&&(inCategorie!=2)&& (inCategorie != 3)) throw new CategorieException(inCategorie); else { this.matricule = inMatricule; this.categorie = inCategorie; this.service = inService; this.nom = inNom; this.salaire = inSalaire; adrSal.setNomRue("Don"); adrSal.setCodePostal(59240); Vector listeEnfants = new Vector (); listeEnfants.add(new Enfant("www","zzzz","124528",this)); } public String toString() { return matricule + ", " + categorie + ", " + service + ", " + nom+", "+adrSal.toString()+ ", " + salaire +", "+ listeEnfants.toString() ; } }
mon class test avec main
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 public class Enfant { private static int compteur = 0; private String nom; private String prenom; private String dateNaiss; private Salarie refSalarie; public Enfant(String inNom, String inPrenom, String inDateNaiss, Salarie inRefSalarie) { compteur++; this.nom = inNom; this.prenom = inPrenom; this.dateNaiss = inDateNaiss; this.refSalarie = inRefSalarie; } public String toString() { return nom+", "+prenom+", "+dateNaiss; } }
Quand je teste, voici le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 import java.util.*; public class TestSalarie { public static void main(String[] argv) throws SalaireException, CategorieException { Salarie sal1= new Salarie(2, 2, 7, "forum", 35000.00); System.out.println("TO STRING SALARIE : "+sal1); } }
le constat est que il m'afiiche [] au lieu de me donner l'information sur la classe enfant lié à notre salarié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TO STRING SALARIE : 2, 2, 7, forum- Don- 59240, 35000.0, []
et si vous avez remarquer, mon vector que j'ai déclaré plus, il a été déclaré 2 fois. en private et ensuite dans mon constructeur d'initialisation de ma classe Salarie. quand je rétire mon vector dans mon constructeur d'inistialisation, j'ai des erreurs et des tonnes d'exceptions. je vous donne en résulat.
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 Exception in thread "main" java.lang.StackOverflowError at sun.misc.FloatingDecimal.dtoa(Unknown Source) at sun.misc.FloatingDecimal.<init>(Unknown Source) at java.lang.AbstractStringBuilder.append(Unknown Source) at java.lang.StringBuilder.append(Unknown Source) at Object.Salarie.toString(Salarie.java:132) at java.lang.String.valueOf(Unknown Source) at java.lang.StringBuilder.append(Unknown Source) at Object.Enfant.toString(Enfant.java:34) at java.lang.String.valueOf(Unknown Source) at java.lang.StringBuilder.append(Unknown Source) at java.util.AbstractCollection.toString(Unknown Source) at java.util.Vector.toString(Unknown Source) at Object.Salarie.toString(Salarie.java:132) at java.lang.String.valueOf(Unknown Source) at java.lang.StringBuilder.append(Unknown Source) at Object.Enfant.toString(Enfant.java:34) at java.lang.String.valueOf(Unknown Source)
Partager