ก่อนหน้านี้ฉันมี LegNo enums ของฉันที่กำหนดไว้ง่ายๆว่า:
NO_LEG, LEG_ONE, LEG_TWO
และด้วยการโทรreturn LegNo.values()[i];
ฉันสามารถรับค่าที่เกี่ยวข้องกับแต่ละ enum
แต่ตอนนี้ฉันตัดสินใจแล้วว่าฉันต้องการให้LegNo
enum NO_LEG
เป็น int -1 แทนที่จะเป็น 0 ดังนั้นฉันจึงตัดสินใจใช้ตัวสร้างส่วนตัวเพื่อเริ่มต้นและตั้งค่า int
NO_LEG(-1), LEG_ONE(1), LEG_TWO(2);
private LegNo(final int leg) { legNo = leg; }
สิ่งเดียวตอนนี้ก็คือเพราะฉันทำแบบนี้วิธีนี้values()
จะไม่ได้ผลกับNO_LEG
enum ฉันจะรับ enum ที่เกี่ยวข้องกับ int ได้อย่างไร มีวิธีใดที่มีประสิทธิภาพในการทำสิ่งนี้นอกเหนือจากการใช้คำสั่ง case switch หรือ if-elseif-elseif
ฉันเห็นคำถาม SO มากมายเกี่ยวกับการรับค่า int จาก enum แต่ฉันกลับหลัง