Si j'ai:
Enum<?> myEnum = [METHOD THAT GETS ENUM BY STRING FROM TWO DIFFRENT ENUMS];
3 Réponses :
Vous pouvez faire quelque chose comme ceci:
import java.util.ArrayList; import java.util.List; interface ValueProvider{ public String getValue(); } enum FirstEnum implements ValueProvider { A("a"), B("b"); private String value; FirstEnum(String s) { this.value=s; } public String getValue(){ return value; } } enum SecondEnum implements ValueProvider{ C("c"), D("d"); private String value; SecondEnum(String s){ this.value=s; } public String getValue(){ return value; } } public class enumTest { public static void main(String[] args) { ArrayList<ValueProvider> al = new ArrayList<ValueProvider>(); al.add(FirstEnum.A); al.add(SecondEnum.C); al.add(FirstEnum.B); al.add(SecondEnum.D); listEnumValues(al); } public static void listEnumValues(List<ValueProvider> al){ for(var e:al){ System.out.println(e.getValue()); } } }
Voici une solution possible à votre question spécifique. Notez la méthode:
Enum myenum = getenumvaluefromtwodifferentenumsbyname (Firstenenum.class, secondenum.class, Nomvaluename); P>
public enum FirstEnum { A, B; } public enum SecondEnum { C, D; } //Enums will throw NPE when the value is not found so we have to handle this first public static Enum<?> getEnumValueNoException(Class<? extends Enum> enumeration, String valueName) { try { return Enum.valueOf(enumeration, valueName); } catch (NullPointerException e) { return null; } } public static Enum<?> getEnumValueFromTwoDifferentEnumsByName(Class<? extends Enum> enum1, Class<? extends Enum> enum2, String enumValueName) { Enum<?> possibility1 = getEnumValueNoException(enum1, enumValueName); Enum<?> possibility2 = getEnumValueNoException(enum2, enumValueName); if (possibility1 == null && possibility2 == null) { throw new NullPointerException("Found no valid enum values for name " + enumValueName + " in enums " + enum1 + " and " + enum2); } return possibility1 != null ? possibility1 : possibility2; } public static void main(String[] args) throws Exception { String enumValueName = "A"; Enum<?> myEnum = getEnumValueFromTwoDifferentEnumsByName(FirstEnum.class, SecondEnum.class, enumValueName); System.out.println(myEnum); }
Une manière simplifiée si vous recherchez une paire d'énums prédéfinie consiste à faire et si le résultat est Notez que je compare à l'aide de null code> alors faites la même chose pour
secondenum code>. p>
Tostring code> que vous voudrez peut-être remplacer s'il s'agit des variables enum ("A", "B", etc.). Match P> P>
Pourquoi avez-vous besoin de cela? Sonne comme un XY Problème .
S'il vous plaît définir quelle est une "valeur enum". La question est très difficile à comprendre.