Enums เป็น type-safe หมายถึง enum มี namespace ของตัวเอง ไม่สามารถ assign ค่าอื่นนอกเหนือจาก enum constants ที่ระบุได้ Typesafe enums มาใน Java 1.5 เพิ่มเติม enum เป็น reference type พฤติกรรมคล้าย class หรือ interface เราสามารถสร้างเมธอดและตัวแปรภายใน enum declaration ได้
ตัวอย่าง 1: Enum พื้นฐาน
import java.util.*;
enum JobType {
permanent,
contract
}
public class EnumTest1 {
public static void main(String []args) {
print(JobType.values());
}
public static void print(JobType[] list) {
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
}
}
ผลลัพธ์
permanent contract
ตัวอย่าง 2: Enum มีเมธอด abstract
enum JobType {
permanent {
public void print(String str1) {
System.out.println("This is a permanent " + str1);
}
},
contract {
public void print(String str2) {
System.out.println("This is a contract " + str2);
}
};
abstract void print(String name);
}
public class EnumTest2 {
public static void main(String[] args) {
JobType dt1 = JobType.permanent;
JobType dt2 = JobType.contract;
dt1.print("job");
dt2.print("job");
}
}
ผลลัพธ์
This is a permanent job This is a contract job