Java枚举类型Enum的用法

[b](1)定义[/b]
/*
* 最基本的enum
*/
enum NumericEnums {
ONE, TWO, THREE, FOUR, FIVE,
}

/*
* 构造函数和自定义方法
*/
enum ConstructableEnums {
ABC(10, "abc"), DEF(20, "def"), GHI(30, "ghi"), JKL(40, "jkl");
final int num;
final String name;

//构造函数默认是private,也只能是private。其他的话会编译错误!
ConstructableEnums(int _num, String _name) {
this.num = _num;
this.name = _name;
}

String getContent() {
return String.format("num=[%d], name=[%s]", num, name);
}
}

/*
* 抽象方法和方法override
*/
enum EnumsWithMethod {
MORNING("Good Morning") {
@Override
String hello(String yourName) {
return greeting + ", " + yourName + ". zzz...";
}
},
AFTERNOON("Good Afternoon") {
@Override
String hello(String yourName) {
return greeting + ", " + yourName + ". tea or coffee ?";
}

@Override
String getGreeting() {
return super.getGreeting() + ", but sleepy...";
}
},
EVENING("Good Evening") {
@Override
String hello(String yourName) {
return greeting + ", " + yourName + ". sleep, sleep.";
}
};
final String greeting;

EnumsWithMethod(String _greeting) {
this.greeting = _greeting;
}

abstract String hello(String yourName);

String getGreeting() {
return greeting;
}
}

/*
* 实现接口
*/
interface HelloInterface {
public String sayHello(String yourName);
}

enum EnumWithInterface implements HelloInterface {
ME_THEN_YOU("foo") {
public String sayHello(String yourName) {
return String.format("I'm %s, you're %s.", myName, yourName);
}
},
YOU_THEN_ME("bar") {
public String sayHello(String yourName) {
return String.format("You're %s, I'm %s.", yourName, myName);
}
};
final String myName;

EnumWithInterface(String _myName) {
myName = _myName;
}
}


[b](2)使用[/b]
// ----------------------------------------
System.out.println("printing NumericEnums.values():");
for (NumericEnums e : NumericEnums.values()) {
System.out.print(e.toString() + "\t");
}//ONE TWO THREE FOUR FIVE
System.out.println();

NumericEnums o = NumericEnums.ONE;
if(o == NumericEnums.ONE){
System.out.println("enum in java can be compared using ==");
}

System.out.println(NumericEnums.valueOf("ONE").equals(NumericEnums.ONE));//true
try {
NumericEnums.valueOf("one");
} catch (IllegalArgumentException e) {
System.out.println("one is not exist!");
}

NumericEnums one = NumericEnums.ONE;
switch(one) {
case ONE:
System.out.println("ONE");
break;
}

// ----------------------------------------
System.out.println("printing ConstructableEnums.values():");
for (ConstructableEnums e : ConstructableEnums.values()) {
System.out.print(e.toString() + "\t");
}//ABC DEF GHI JKL
System.out.println();
System.out.println(ConstructableEnums.valueOf("DEF").equals(ConstructableEnums.DEF));//true

System.out.println(ConstructableEnums.DEF.getContent());//num=[20], name=[def]

// ----------------------------------------
System.out.println(EnumsWithMethod.MORNING.hello("foo")); //Good Morning, foo. zzz...
System.out.println(EnumsWithMethod.AFTERNOON.hello("bar"));//Good Afternoon, bar. tea or coffee ?
System.out.println(EnumsWithMethod.EVENING.hello("baz"));//Good Evening, baz. sleep, sleep.
System.out.println(EnumsWithMethod.MORNING.getGreeting());//Good Morning
System.out.println(EnumsWithMethod.AFTERNOON.getGreeting());//Good Afternoon, but sleepy...
System.out.println(EnumsWithMethod.EVENING.getGreeting());//Good Evening

// ----------------------------------------
System.out.println(EnumWithInterface.ME_THEN_YOU.sayHello("abc"));//I'm foo, you're abc.
System.out.println(EnumWithInterface.YOU_THEN_ME.sayHello("def"));//You're def, I'm bar.

// EnumMap----------------------------------------
Map<NumericEnums, String> numerics = new EnumMap<NumericEnums, String>(NumericEnums.class);
numerics.put(NumericEnums.ONE, "one");
numerics.put(NumericEnums.TWO, "two");
numerics.put(NumericEnums.THREE, "three");
numerics.put(NumericEnums.FOUR, "four");
numerics.put(NumericEnums.FIVE, "five");

System.out.println(numerics.get(NumericEnums.FOUR));//four

// EnumSet----------------------------------------
Set<NumericEnums> s1 = EnumSet.of(NumericEnums.TWO, NumericEnums.THREE);
System.out.println(s1.contains(NumericEnums.TWO));//true
System.out.println(s1.contains(NumericEnums.FOUR));//false

Set<NumericEnums> s2 = EnumSet.noneOf(NumericEnums.class);
System.out.println(s2.size());//0

Set<NumericEnums> s3 = EnumSet.range(NumericEnums.TWO, NumericEnums.FOUR);
System.out.println(s3.contains(NumericEnums.ONE));//false
System.out.println(s3.contains(NumericEnums.TWO));//true
System.out.println(s3.contains(NumericEnums.THREE));//true
System.out.println(s3.contains(NumericEnums.FOUR));//true
System.out.println(s3.contains(NumericEnums.FIVE));//false

// int->Enum
System.out.println(NumericEnums.values()[0].equals(NumericEnums.ONE));//true

// String->Enum
System.out.println(NumericEnums.valueOf("ONE").equals(NumericEnums.ONE));//true

// Enum->int----------------------------------------
System.out.println(NumericEnums.ONE.ordinal());//0
System.out.println(NumericEnums.TWO.ordinal());//1
System.out.println(NumericEnums.THREE.ordinal());//2
System.out.println(NumericEnums.FOUR.ordinal());//3
System.out.println(NumericEnums.FIVE.ordinal());//4

// Enum->String----------------------------------------
System.out.println(NumericEnums.ONE.name());//ONE
System.out.println(NumericEnums.TWO.name());//TWO
System.out.println(NumericEnums.THREE.name());//THREE
System.out.println(NumericEnums.FOUR.name());//FOUR
System.out.println(NumericEnums.FIVE.name());//FIVE

System.out.println(NumericEnums.ONE.toString());//ONE
System.out.println(NumericEnums.TWO.toString());//TWO
System.out.println(NumericEnums.THREE.toString());//THREE
System.out.println(NumericEnums.FOUR.toString());//FOUR
System.out.println(NumericEnums.FIVE.toString());//FIVE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值