java成神之——enum枚舉操作
阿新 • • 發佈:2018-10-05
serializa ali over case values ride 代碼 ide HERE
- 枚舉
- 聲明
- 枚舉遍歷
- 枚舉在switch中使用
- 枚舉比較
- 枚舉靜態構造方法
- 使用類來模擬枚舉
- 枚舉中定義抽象方法
- 枚舉實現接口
- 單例模式
- 使用靜態代碼快
- EnumSet
- EnumMap
- 結語
枚舉
聲明
基本使用
public enum ChineseNumber {
YI,
ER,
SAN,
SI
}
ChineseNumber.values(); // ["YI","ER","SAN","SI"]
枚舉遍歷
for (ChineseNumber s : ChineseNumber.values()) { System.out.println(s.name()); }
枚舉在switch中使用
ChineseNumber s = ChineseNumber.ER;
switch(s) {
case YI:
System.out.println("一");
break;
case ER:
System.out.println("二");
break;
case SAN:
System.out.println("三");
break;
case SI:
System.out.println("四");
break;
}
枚舉比較
Boolean b = ChineseNumber.YI == ChineseNumber.ER; Boolean b = ChineseNumber.YI.equals(ChineseNumber.ER);
枚舉靜態構造方法
public enum ChineseNumber {
YI(1),
ER(2),
SAN(3),
SI(4);
private int value;
ChineseNumber(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
ChineseNumber.YI.getValue(); // 1
使用類來模擬枚舉
class MyEnum<T extends MyEnum<T>> implements Comparable<T>, Serializable{ public static final MyEnum ONE = new MyEnum(1); public static final MyEnum TWO = new MyEnum(2); public static final MyEnum THERE = new MyEnum(3); public static final MyEnum FOUR = new MyEnum(4); private int value; private MyEnum(int value){ this.value = value; } public int getValue() { return value; } } MyEnum.TWO.getValue();
枚舉中定義抽象方法
public enum MyAction {
fn {
public String execute() {
return "execute this method";
}
};
public abstract String execute();
};
MyAction.fn.execute();
枚舉實現接口
public enum RegEx implements Predicate<String> {
LETTERS("[a-zA-Z]+");
private final Pattern pattern;
private RegEx(final String pattern) {
this.pattern = Pattern.compile(pattern);
}
@Override
public boolean test(final String input) {
return this.pattern.matcher(input).matches();
}
}
RegEx.LETTERS.test("abc");
或者
public enum RegEx implements Predicate<String> {
ISLETTERS {
@Override
public boolean test(final String input) {
return Pattern.compile("[a-zA-Z]+").matcher(input).matches();
}
};
}
RegEx.ISLETTERS.test("abc");
單例模式
枚舉是實現單例模式目前最好最優的方法
枚舉被引用時才會實例化
public enum MySingletonPattern {
Loneliness;
private MySingletonPattern () {}
public String SomeWords() {
return "I am so lonely";
}
}
MySingletonPattern.Loneliness.SomeWords();
使用靜態代碼快
public enum EnglishWord {
a,b,c,d;
private String upper;
String getUpper() {
return upper;
}
static {
a.upper = "A";
b.upper = "B";
c.upper = "C";
d.upper = "D";
}
}
EnglishWord.a.getUpper();
EnumSet
EnumSet<EnglishWord> set = EnumSet.range(EnglishWord.a, EnglishWord.b); // 取枚舉部分值from...to
EnumSet<EnglishWord> set = EnumSet.of(EnglishWord.a);
EnumMap
public enum EnglishLowerWord {
a, b, c;
}
public enum EnglishUpperWord {
A, B, C;
}
EnumMap<EnglishLowerWord, EnglishUpperWord> map = new EnumMap<EnglishLowerWord, EnglishUpperWord>(EnglishLowerWord.class);
map.put(EnglishLowerWord.a, EnglishUpperWord.A);
map.put(EnglishLowerWord.b, EnglishUpperWord.B);
map.put(EnglishLowerWord.c, EnglishUpperWord.C);
結語
本文章是java成神的系列文章之一
如果你想知道,但是本文沒有的,請下方留言
我會第一時間總結出來並發布填充到本文
java成神之——enum枚舉操作