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.