มาจากตอนที่แล้ว http://myjava.exteen.com/20091015/enum-1

แล้วนอกจากนี้ enum ในภาษา จาวา สามารถ มี Field และ Methode ได้ด้วยนะ เช่น

enum Grade{
     A,B,C,D,E;

     public float getPoint(){
        switch(this){
           case A:return(4.0f);
           case B:return(3.0f);
           case C:return(2.0f);
           case D:return(1.0f);
           case E:return(0.0f);
           default:return(0.0f);
        }
     }
}

Grade grade = Grade.B;

System.out.println("Grade : "+grade.getPoint()+" Point.");

นี้คือตัวอย่างการใช้ enum แบบ method นะครับโดยเราสามารถคืนค่าออกนอก Object ได้ผ่านตัว getPoint ใน enum Grade หงิๆ

อีกตัวคือ Struct ใน enum ครับ มีวิธีการเขียนลักษณะนี้

enum MEnum{
     field1("Hello"),
     field2("java"),
     field3("World");
 
     private MEnum(String t){
             this.txt = t;
     }

     public String getMsg(){
            return(this.txt);
     }

     private String txt;
}
 
for(MEnum e : MEnum.values()){
     System.out.println(e.getMsg());
}

แล้วนอกจากนี้เรายังสามารถ เข้าถึง Field ผ่าน method ที่ชื่อ valueOf ได้อีกด้วย ตัวอย่างเช่น

int id = 1;
MEnum enums = MEnum.valueOf("field"+id);

หงิๆ แจ่มกว่า final เห็นๆเลย หงิ


คำว่า "enumeration" หลายคนคงรู้จักกันดี ในนามของ enum ซึ่งภาษา java ก็ได้นำมาใช้ใน jdk 5.0 ขึ้นไป
ซึ่งประโยชของมัน มีมากมายหลายอย่าง *0* แต่ประโยชของมัน เพื่อเป็นการเก็บค่าคงที่นั่นเอง

หากเราจะสร้างตัวเองเก็บ เกรดนักศึกษา เราคงต้องเขียนค่าคงที่แบบนี้

final static char[] grade = {'A','B','C','D','E','F'};

และใช้ได้ดั่งนี้

private char myGrade = grade[0];

ซึ่งวิธีการแบบนี้มีข้อเสียคือหากเราเปลี่ยนเป็น

 private char myGrade = '1';

มันก็จะนอกเหนือจากโค้ตที่เราต้องการกำหนดเราจึงเลือก enumeration มาเป็นตัวช่วยในการทำค่าคงที่สามารถเขียนได้โดย

enum grade{
                    A,
                    B,
                    C,
                    D,
                    E,
                    F
 }

//และมีวิธีการใช้งานที่ค่อนข้างง่ายโดนเราจะต้องสร้าง referend ชนิด grade ขึ้นมาใช้เลย

//example

grade myGrade = grade.A; //A

myGrade = '1'; //Error


เห็นไหมครับ วิธีนี้ มีประโยชมากในการกำหนดค่าคงที่แบบ enumeration