En créant une classe Coin avec une liste statique qui stocke toutes les instances de la classe créée, j'ai besoin d'initialiser cette liste avec une instance initiale, et je n'ai pas compris comment le faire sans l'ajouter deux fois (à cause d'un code redondant), des suggestions?arraylist statique avec des instances de classe avec des valeurs initiales
public class Coin {
private static ArrayList<String> coinNames = new ArrayList<>();
private static ArrayList<String> coinAbbreviations = new ArrayList<>(Arrays.asList("CLP"));
private static ArrayList<Coin> coins =
new ArrayList<>(Arrays.asList(new Coin("Pesos chilenos", "CLP", 1f, "CLP")));
private static HashMap<String,Float> exchangeRates;
private String coinName;
private String coinAbbreviation;
private Float coinValue;
private String unit;
public Coin(String coinName, String coinAbbreviation, Float coinValue, String unit) {
assert !coinAbbreviations.contains(coinAbbreviation) : "Coin abbreviation already used";
assert coinAbbreviations.contains(unit) : "Coin unit non existent.";
assert !coinNames.contains(coinName) : "Coin name already used.";
this.coinName = coinName;
this.coinAbbreviation = coinAbbreviation;
this.coinValue = coinValue;
this.unit = unit;
coins.add(this);
}
}
* arraylist statique qui stocke tous les cas * ne sais pas ce que sont vous essayez de faire – Ravi
S'il vous plaît garder à l'esprit que ce modèle est thread-dangereux en soi (ce est, vous ne pouvez fondamentalement jamais faire de code thread-safe avec elle), donc c'est une mauvaise habitude à prendre. Une meilleure approche serait un constructeur privé, et une méthode d'usine statique qui appelle ce constructeur, puis ajoute l'instance à 'pièces de monnaie». – yshavit
Mieux serait d'avoir une classe CoinFactory qui crée (et renvoie) des instances Coin et les ajoute à elle-même. Votre solution actuelle n'est pas sûre pour les threads et c'est juste un inconvénient. – DodgyCodeException