Trước đây, tôi đã enums Legno tôi định nghĩa đơn giản là:Bắt enum gắn liền với giá trị int
NO_LEG, LEG_ONE, LEG_TWO
và bằng cách gọi return LegNo.values()[i];
, tôi đã có thể nhận được giá trị gắn liền với mỗi enum.
Nhưng bây giờ tôi đã quyết định rằng tôi muốn LegNo
enum NO_LEG
là int -1 thay vì 0 vì vậy tôi quyết định sử dụng một constructor tin để khởi và thiết lập giá trị của nó int
NO_LEG(-1), LEG_ONE(1), LEG_TWO(2);
private LegNo(final int leg) { legNo = leg; }
chỉ điều bây giờ là bởi vì tôi đang làm theo cách này, phương pháp values()
sẽ không hoạt động đối với trường hợp NO_LEG
enum. Làm thế nào để tôi nhận được enum liên kết với int? Có cách nào hiệu quả để thực hiện việc này ngoài cách sử dụng tuyên bố chuyển đổi trường hợp hoặc if-elseif-elseif
Tôi có thể thấy rất nhiều câu hỏi SO để làm với giá trị int từ enum, nhưng tôi sau khi đảo ngược.
xin lỗi im không chắc chắn nếu tôi đã đủ rõ ràng. tôi muốn vượt qua trong int và nhận được enum liên kết với nó. –
@ L-Samuels Đoán tôi đã không đọc câu hỏi của bạn đúng cách. Xem cập nhật của tôi. – adarshr
Tôi biết điều này có vẻ hiển nhiên, nhưng sử dụng nó như vậy: 'LegNo foo = LegNo.valueOf (2);'. Mã trước đó sẽ trả về 'LegNo.LEG_TWO'. – FirstOne