J'ai un énumé défini qui contient le type de retour de la méthode comme "chaîne", flotter, liste, double etc.
Je l'utiliserai dans les relevés de cas de commutation.
Par exemple, mon énumé est p> dans un fichier de propriété, j'ai des paires de valeur clé comme suit.
Test1 = chaîne
Test2 = Double P> dans mon code Je reçois la valeur de la clé. Je dois utiliser la valeur dans l'étui de commutation pour déterminer le type et sur la base de celle que je dois mettre en œuvre une logique.
Par exemple, quelque chose comme celui-ci p> peut m'aider à mettre en œuvre cela? P> p>
4 Réponses :
Vous avez défini l'énum, mais vous devez définir une variable que est em> ce type. Comme ceci: précédemment, cet extrait utilisé var code> comme nom de variable, mais c'est un mot-clé réservé. Changé en
MyMethod code>. P> p>
Mais dans mon cas, j'aurai la valeur basée sur la clé du fichier de propriétés. Par exemple, ma valeur sera "chaîne", je dois l'utiliser dans le boîtier de commutation. Y a-t-il une approche alternative à cela? Pourriez vous me laisser savoir s'il vous plait?
Je ne suis pas totalement sûr de comprendre ce que vous voulez dire. Si vous recherchez plus de paires de clé / valeur, vous voudrez peut-être utiliser un dictionnaire. Si vous souhaitez voir quelle valeur de type A est, par exemple si Var est i> un double, le code serait si (var est double) {// fait des choses} code>
Vous n'avez pas besoin d'un commutateur du tout (c'est-à-dire Java BTW afin de ne pas fonctionner pour vous): évidemment, vous voudrez ajouter des chèques nuls, une meilleure manipulation des exceptions, etc.
public enum MethodType { String,LONG,DOUBLE,THING; static MethodType fromString(String x) throws Exception { for (MethodType currentType: MethodType.values()){ if (x.equals(currentType.toString())){ return currentType; } } throw new Exception("Unmatched Type"); } }
Et il y a aussi la restriction que la chaîne correspond à la représentation de la méthodype. Si tel est un problème, vous pouvez définir une méthode abstraite stringrepresentation et la mettre en œuvre pour chaque méthodtype
C'est exactement ce que la valeur de (string) code> méthode statique de tous Enums fait, par ex.
MéthodeType.Valueof ("Double") == MéthodeType.Double Code>.
@ZOOGiezork - Vous avez raison, excellent point, a totalement glissé mon esprit.
Je suppose que c'est ce que vous recherchez:
public class C_EnumTest { public enum MethodType { DOUBLE,LIST,STRING,ARRAYLIST,FLOAT,LONG; } public static void main( String[] args ) { String value = "DOUBLE"; switch( MethodType.valueOf( value ) ) { case DOUBLE: System.out.println( "It's a double" ); break; case LIST: System.out.println( "It's a list" ); break; } } }
Ceci est exactement ce que je cherchais. Est-il possible d'avoir une vérification de l'ignorecase pour la méthodype.valueof?
Merci à tous d'avoir fourni l'aide.
Il suffit d'ajouter une ligne pour ne pas être sensible à la casse.
Cela peut être un peu plus proche de ce dont vous avez besoin. Vous pouvez faire la propriété de propriétéName tout ce dont vous avez besoin pour être dans ce cas:
public enum MethodType { STRING("String"), LONG("Long"), DOUBLE("Double"), THING("Thing"); private String propertyName; MethodType(String propName) { this.propertyName = propName; } public String getPropertyName() { return propertyName; } static MethodType fromPropertyName(String x) throws Exception { for (MethodType currentType : MethodType.values()) { if (x.equals(currentType.getPropertyName())) { return currentType; } } throw new Exception("Unmatched Type: " + x); } }