ใช่ Enum implements interface ได้ใน Java มีประโยชน์เมื่อต้อง implement business logic ที่ผูกมัดกับ discriminatory property ของออบเจ็กต์หรือคลาสที่กำหนด Enum เป็น datatype พิเศษที่เพิ่มเข้ามาใน Java 1.5 Enums เป็น constants โดย default เป็น static และ final ดังนั้นชื่อ field ของ enum type จึงเป็น ตัวพิมพ์ใหญ่
ตัวอย่าง
interface EnumInterface {
int calculate(int first, int second);
}
enum EnumClassOperator implements EnumInterface { // Enum implements interface
ADD {
@Override
public int calculate(int first, int second) {
return first + second;
}
},
SUBTRACT {
@Override
public int calculate(int first, int second) {
return first - second;
}
};
}
class Operation {
private int first, second;
private EnumClassOperator operator;
public Operation(int first, int second, EnumClassOperator operator) {
this.first = first;
this.second = second;
this.operator = operator;
}
public int calculate() {
return operator.calculate(first, second);
}
}
// Main Class
public class EnumTest {
public static void main(String[] args) {
Operation add = new Operation(20, 10, EnumClassOperator.ADD);
Operation subtract = new Operation(20, 10, EnumClassOperator.SUBTRACT);
System.out.println("Addition: " + add.calculate());
System.out.println("Subtraction: " + subtract.calculate());
}
}
Output
Addition: 30 Subtraction: 10