প্রদত্ত:
public enum PersonType {
COOL_GUY(1),
JERK(2);
private final int typeId;
private PersonType(int typeId) {
this.typeId = typeId;
}
public final int getTypeId() {
return typeId;
}
public static PersonType findByTypeId(int typeId) {
for (PersonType type : values()) {
if (type.typeId == typeId) {
return type;
}
}
return null;
}
}
আমার জন্য, এটি সাধারণত একটি ডাটাবেসে লুক-আপ টেবিলের সাথে একত্রিত হয় (কেবলমাত্র খুব কম আপডেট হওয়া টেবিলের জন্য)।
যাইহোক, যখন আমি findByTypeId
একটি স্যুইচ বিবৃতিতে ব্যবহার করার চেষ্টা করি (সম্ভবত, ব্যবহারকারী ইনপুট) ...
int userInput = 3;
PersonType personType = PersonType.findByTypeId(userInput);
switch(personType) {
case COOL_GUY:
// Do things only a cool guy would do.
break;
case JERK:
// Push back. Don't enable him.
break;
default:
// I don't know or care what to do with this mess.
}
... অন্যরা যেমন বলেছে, এটি এনপিইতে @ ফলাফল করে switch(personType) {
। একটি কাজের আশেপাশে (অর্থাত্ "সমাধান") আমি প্রয়োগ করতে শুরু করি তা হল একটি UNKNOWN(-1)
প্রকার যুক্ত করা।
public enum PersonType {
UNKNOWN(-1),
COOL_GUY(1),
JERK(2);
...
public static PersonType findByTypeId(int id) {
...
return UNKNOWN;
}
}
এখন, আপনাকে এটি নাল-চেকিং করতে হবে না যেখানে এটি গণনা করা হয় এবং আপনি UNKNOWN
ধরণের হ্যান্ডেলগুলি বেছে নিতে বা না করতে পারেন । (দ্রষ্টব্য: -1
একটি ব্যবসায়ের দৃশ্যে একটি সম্ভাবনাময় শনাক্তকারী, তবে স্পষ্টতই এমন কিছু চয়ন করুন যা আপনার ব্যবহারের ক্ষেত্রে অর্থপূর্ণ হয়)।