Il y a le TypeSafeEnum pattern :) Moi je trouve ca tr�s bien : http://www.javaworld.com/javaworld/jw-07-1997/jw-07-enumerated_p.html Je crois que c'est la bonne adresse. En gros c'est un truc comme ca : public class final Layer { public static final Layer LAYER1 = new Layer("1"); public static final Layer LAYER2 = new Layer("2"); public static final Layer LAYER3 = new Layer("3");
private String _iIdLayer = null;
private Layer(String pId) {
_iIdLayer = pId;
}public String toString() {
return _iIdLayer;
}
}Si je fais pas d'erreur... A toi de jouer avec les final et les protected pour donner plus ou moins de libert� avec l'h�ritage...
Mais il semblerait qu'il ne soit pas si safe que �a (dans certains cas) :
http://www.javaworld.com/javaworld/javatips/jw-javatip122.html (encore un article que je dois lire)
Perso je l'utilise certaines fois et pas de probl�mes, mais je dois pas �tre dans les cas critiques d�crit dans l'article ci dessus. A toi de voir si tu y es.
Bruno
David MARQUES wrote:
j'ai une classe qui contient 3 attributs final static :
public static final int LAYER1 = 1;
public static final int LAYER2 = 2;
public static final int LAYER3 = 3;
quel est la mani�re la plus �l�gante de s'assurer que d'autres classes utilisant ces contantes ne sorte pas des clous (valeur non autoris�e), avec des apppels du style :
objet.methode(4);
alors que methode doit seulement pouvoir �tre utilisable avec seulement mes valeurs de constantes.
j'ai bien une solution :
public static final int LAYER1 = 1;
public static final int LAYER2 = 2;
public static final int LAYER3 = 3;
private static final int [] layerPossibleValues = {LAYER1, LAYER2, LAYER3};
avec une m�thode de v�rification de la valeur dans ma classe du style :
public static boolean isValidLayerNumber(int layerNumber) {
for (int i = 0; i < layerPossibleValues.length; i++) {
int layerpossiblevalue = layerPossibleValues[i];
if (layerNumber == layerpossiblevalue)
return true;
}
return false;
}
un peu lourd, s'il faut v�rifier � chaque utilisation,
ou une m�thode d'obtention de valeur pour chaque valeur possible :
public static int getLayer1() { return LAYER1; }
mais je pense qu'il doit y avoir mieux. non ?
merci
_____________________________________________________________________ Envie de discuter en "live" avec vos amis ? T�l�charger MSN Messenger http://www.ifrance.com/_reloc/m la 1�re messagerie instantan�e de France
