আমি এই সমস্যার enum
মুখোমুখি হয়েছি যে আসল প্রকারটি না জেনে আমি এর সম্ভাব্য মানগুলি পুনরাবৃত্তি করা দরকার।
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
কোনও ধারণা কীভাবে এনামভ্যালু এর সম্ভাব্য মানগুলি থেকে নিষ্কাশন করবেন?
উত্তর:
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
একটি অন enum
বস্তুর একটি ফেরত দিতে পারেন উপপ্রকার এর enum
টাইপ নিজেই (যদি, বলে, enum
ধ্রুবক একটি পদ্ধতি থেকে অগ্রাহ্য enum
টাইপ)। getDeclaringClass()
ফেরৎ enum
যে ধরনের যে ধ্রুব ঘোষণা যা তুমি এখানে কি চাই।
Enum
s এগুলি যেমন Class
টাইপ করা হয় ঠিক তেমন হয়। আপনার বর্তমান কোডটি পরীক্ষা করে দেখায় যে এটি এনুম কিনা তা কোন ধরণের এনুমের একটি অংশ তা উল্লেখ না করেই রয়েছে।
আপনি এনামের ধরণ নির্দিষ্ট না করায় এনুম মানগুলির তালিকা কী তা জানতে আপনাকে প্রতিবিম্ব ব্যবহার করতে হবে।
আপনি এটি এর মতো করতে পারেন:
enumValue.getDeclaringClass().getEnumConstants()
এটি প্রতিটি উপলব্ধ বিকল্পগুলির মধ্যে একটি সহ এনাম অবজেক্টগুলির একটি অ্যারের ফিরিয়ে দেবে।
এনাম মান পদ্ধতি
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
... বা MyEnum.values ()? নাকি আমি কিছু মিস করছি?
এখানে, ভূমিকাটি এমন একটি এনাম যা নিম্নলিখিত মানগুলিতে [অ্যাডমিন, ব্যবহারকারী, 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);
}