# Java中枚舉類型如何使用
## 一、枚舉類型概述
枚舉(Enum)是Java 5引入的一種特殊數據類型,用于定義一組固定的常量。相比傳統的常量定義方式(如`public static final`),枚舉提供了更好的類型安全性和可讀性。
### 基本特點
- 類型安全:編譯器會檢查枚舉值的合法性
- 代碼可讀性:枚舉常量具有自描述性
- 內置方法:自動繼承`java.lang.Enum`類的方法
- 可實現接口:可以像普通類一樣實現接口
## 二、基礎用法
### 1. 簡單枚舉定義
```java
public enum Day {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Day today = Day.MONDAY;
// 獲取枚舉名稱
String name = today.name(); // "MONDAY"
// 獲取枚舉序數(從0開始)
int ordinal = today.ordinal(); // 0
// 字符串轉枚舉
Day day = Day.valueOf("TUESDAY");
// 獲取所有枚舉值
Day[] days = Day.values();
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double surfaceGravity() {
return G * mass / (radius * radius);
}
}
public interface Operation {
double apply(double x, double y);
}
public enum BasicOperation implements Operation {
PLUS("+") {
public double apply(double x, double y) { return x + y; }
},
MINUS("-") {
public double apply(double x, double y) { return x - y; }
};
private final String symbol;
BasicOperation(String symbol) {
this.symbol = symbol;
}
}
public enum Operator {
ADD {
public int apply(int a, int b) { return a + b; }
},
SUBTRACT {
public int apply(int a, int b) { return a - b; }
};
public abstract int apply(int a, int b);
}
public enum OrderStatus {
NEW {
@Override
public OrderStatus nextStatus() {
return PROCESSING;
}
},
PROCESSING {
@Override
public OrderStatus nextStatus() {
return SHIPPED;
}
},
SHIPPED {
@Override
public OrderStatus nextStatus() {
return DELIVERED;
}
};
public abstract OrderStatus nextStatus();
}
public enum Singleton {
INSTANCE;
public void doSomething() {
// 單例方法實現
}
}
public enum Calculator {
ADD {
public int calculate(int a, int b) { return a + b; }
},
SUBTRACT {
public int calculate(int a, int b) { return a - b; }
};
public abstract int calculate(int a, int b);
}
==
而不是equals()
,因為枚舉值是單例Java枚舉是比常量更強大的替代方案,它不僅可以表示簡單的常量集合,還能通過添加屬性、方法和實現接口來構建更復雜的數據結構。合理使用枚舉可以使代碼更安全、更清晰,并減少潛在的錯誤。
提示:在Java 8及以后版本中,枚舉可以與Lambda表達式結合使用,實現更靈活的設計模式。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。