जवाबों:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
एक enum
वस्तु पर ही प्रकार का एक उपप्रकार वापस आ सकता enum
है (यदि, कहते हैं, enum
निरंतर enum
प्रकार से एक विधि को ओवरराइड करता है )। getDeclaringClass()
उस enum
प्रकार को लौटाता है जो उस स्थिर को घोषित करता है, जो आप यहाँ चाहते हैं।
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
या
YourEnumClass[] yourEnums = YourEnumClass.values();
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
एक गैर-स्थैतिक विधि से कॉल करने की मेरी समस्या को हल किया।
Enum
s इस प्रकार हैं Class
कि वे टाइप किए गए हैं। आपका वर्तमान कोड सिर्फ यह जाँचता है कि यह एक एनम है, यह निर्दिष्ट किए बिना कि एनम किस प्रकार का है।
क्योंकि आपने enum के प्रकार को निर्दिष्ट नहीं किया है, इसलिए आपको पता लगाने के लिए प्रतिबिंब का उपयोग करना होगा कि enum मानों की सूची क्या है।
आप इसे ऐसा कर सकते हैं:
enumValue.getDeclaringClass().getEnumConstants()
यह Enum ऑब्जेक्ट्स की एक सरणी लौटाएगा, जिसमें प्रत्येक उपलब्ध विकल्पों में से एक होगा।
वैल्यू ऑफ़ एनम
enum.values () विधि जो सभी एनम उदाहरणों को वापस करती है।
public class EnumTest {
private enum Currency {
PENNY("1 rs"), NICKLE("5 rs"), DIME("10 rs"), QUARTER("25 rs");
private String value;
private Currency(String brand) {
this.value = brand;
}
@Override
public String toString() {
return value;
}
}
public static void main(String args[]) {
Currency[] currencies = Currency.values();
// enum name using name method
// enum to String using toString() method
for (Currency currency : currencies) {
System.out.printf("[ Currency : %s,
Value : %s ]%n",currency.name(),currency);
}
}
}
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
यहाँ, रोल एक एनम है जिसमें निम्नलिखित मान शामिल हैं [ADMIN, USER, OTHER]।
List<Role> roleList = Arrays.asList(Role.values());
roleList.forEach(role -> {
System.out.println(role);
});
कोई भी java.util.EnumSet का उपयोग इस तरह कर सकता है
@Test
void test(){
Enum aEnum =DayOfWeek.MONDAY;
printAll(aEnum);
}
void printAll(Enum value){
Set allValues = EnumSet.allOf(value.getClass());
System.out.println(allValues);
}