1 2 3 | public enum Resolution { HIGH, MEDIUM, LOW } |
1 2 3 | public void changeResolution(Resolution res){ //... } |
แล้วทำการส่งค่า object parameter ที่ไม่ใช่ชนิด Resolution จะทำให้คอมไพล์ไม่ผ่าน
1 2 | changeResolution(res.HIGH); //All good changeResolution(-1); //Compile-time error |
เมธอดแบบนี้เป็นประเภท "type-safe" นั้่นคือเราไม่สามารถส่งผ่านค่าที่มีประเภทไม่ตรงกับที่กำหนดไว้
การกำหนดค่าตัวแปรของ enum สามารถกำหนดได้แบบนี้ แต่ให้ระวังเรื่องของ case sensitive
1 2 3 | Resolution res = Resolution.LOW Resolution resh = Resolution.valueOf("HIGH"); Resolution resh = Resolution.valueOf("High"); // Run-time exception |
สามารถใช้เมธอด value() กับ for-each ดึงค่าออกมาตามลำดับที่กำหนดไว้
1 2 3 | for(Resolution r: Resolution.values()) { System.out.print(v.name() +", "); } |
Output คือ
1 | HIGH, MEDIUM, LOW |
Enums สามารถแสดงค่าตามลำดับตอนประกาศขึ้นมาโดยใช้เมธอด ordinal()
1 2 | System.out.println(Volume.HIGH.ordinal()); System.out.println(Volume.LOW.ordinal()); |
Output คือ
1 2 | 0 2 |
อ้างอิง : Java8
Programmer2 Study Guide, Esterban Herrera
No comments:
Post a Comment