Je suis encore en train d'apprendre à propos de l'encapsulation. J'ai un GrammarList
, où chaque Grammar
emcapsulated a un tableau listRule
avec tous leurs setters & getters. comme on le voit ici:Pourquoi mon tableau est-il écrasé? Java
public class Grammar {
private enum Type {Left, Right, NULL};
private String Nom;
private static Type type = null;
private static ArrayList<Rule> listRule;
public Grammar(String nom, Type type) {
this.Nom = nom;
this.type = type;
this.listRule = new ArrayList<Rule>();
}
...
}
Maintenant dans mon programme, je remarque que mon listRule tableau (où sont les règles associées à une grammaire sont ajoutées) est écrasé à chaque fois une nouvelle grammaire est ajoutée. J'ai été en mesure d'identifier que l'erreur se produit sur la ligne Grammar grammar = new Grammar(parametre[0], null);
qui vide le contenu de listRule de toutes les autres grammaires afin que listRule semble être le même pour chaque grammaire. Est-ce que mon tableau listRule est mal créé ou est ma boucle?
try {
while ((strLine = br.readLine()) != null) {
String[] parametre = strLine.split(",");
Grammar G = GrammarList.containsNom(parametre[0]);
if (G == null) {
Grammar grammar = new Grammar(parametre[0], null);
grammarList.add(grammar);
for (int i = 1; i < parametre.length; i++) {
SyntaxCheck check = new SyntaxCheck(parametre[i]);
if (check.isValid())
grammar.AddRule(check.Rule, check.Sens);
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
Bienvenue sur Stack Overflow, pour mieux aider à diffuser plus tôt un [mcve] bon – Frakcool