基礎知識
在J
清單
public class Loop {
enum Size {
Small
Medium
Large
}
public static void main(String args[]) {
for (Size s : Size
helper(s);
}
}
private static void helper(Size s) {
System
}
}
構造函數
在使用 enum 關鍵字創建新的枚舉類型時
清單
new Enum<Size>(
new Enum<Size>(
new Enum<Size>(
不必將構造函數的使用限制為間接 Enum 構造函數調用
清單
public class Sample {
enum Size {
Small(
Medium(
Large(
double pricingFactor;
Size(double p) {
pricingFactor = p;
}
}
public static void main(String args[]) {
Size s = Size
double d = s
System
}
}
運行該程序將返回給定 Size 的定價因子
清單
public class Sample
enum Size {
Small(
Medium(
Large(
private double pricingFactor;
Size(double p) {
pricingFactor = p;
}
public double getPricingFactor() {
return pricingFactor;
}
}
public static void main(String args[]) {
Size s = Size
double d = s
System
}
}
對於這兩種情況
Large Size has pricing factor of
預定義的方法
因為用戶定義的枚舉類型是 Enum 類型的子類
public int compareTo(E e)
public boolean equals(Object o)
public final Class<E> getDeclaringClass()
public int hashCode()
public String name()
public int ordinal()
public String toString()
public static <T extends Enum<T>> T valueOf(Class<T> enumType
一些方法看起來很熟悉
getDeclaringClass() 和 valueOf() 方法需要稍多一些解釋
對於具有特定於常量的類主體的 enum 常量
接下來
特定於常量的類主體
特定於常量的類主體是 enum 關鍵字的一個受支持的特性
清單
public class Sample
enum Size {
Small {
public double getPricingFactor() {
return
}
}
Medium
Large
ExtraLarge {
public double getPricingFactor() {
return
}
}
ExtraExtraLarge {
public double getPricingFactor() {
return
}
};
public double getPricingFactor() {
return
}
}
public static void main(String args[]) {
for (Size s : Size
double d = s
System
}
}
}
如果回頭想想前面描述過的 getDeclaringClass() 方法
EnumMap 和 EnumSet
java
清單
清單
import java
public class EnumMapSample {
enum Size {
Small
Medium
Large;
}
public static void main(String args[]) {
Map<Size
map
map
map
for (Map
helper(entry);
}
}
private static void helper(Map
System
}
}
枚舉集合的作用類似於特性的集合
public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)
public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)
public static <E extends Enum<E>> EnumSet<E> of(E e)
public static <E extends Enum<E>> EnumSet<E> of(E first
public static <E extends Enum<E>> EnumSet<E> of(E e
public static <E extends Enum<E>> EnumSet<E> of(E e
public static <E extends Enum<E>> EnumSet<E> of(E e
public static <E extends Enum<E>> EnumSet<E> of(E e
public static <E extends Enum<E>> EnumSet<E> range(E from
一旦創建了 EnumSet
結束語
使用枚舉
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19642.html