java 枚举操作_java成神之——enum枚举操作

枚举

声明

基本使用

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> implements Comparable, 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 {

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 {

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 set = EnumSet.range(EnglishWord.a, EnglishWord.b); // 取枚举部分值from...to

EnumSet set = EnumSet.of(EnglishWord.a);

EnumMap

public enum EnglishLowerWord {

a, b, c;

}

public enum EnglishUpperWord {

A, B, C;

}

EnumMap map = new EnumMap(EnglishLowerWord.class);

map.put(EnglishLowerWord.a, EnglishUpperWord.A);

map.put(EnglishLowerWord.b, EnglishUpperWord.B);

map.put(EnglishLowerWord.c, EnglishUpperWord.C);

结语

本文章是java成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值