java 枚举 enum_Java中枚举enum

1. enum用于常量

在JDK1.5之前可以使用public static final来定义常量,现在可以使用enum,而且枚举提供了比常量更多的方法。

public enum Color{

Red, White, Blue, Black

}

public class ColorTest{

public static void main(String[] args){

Color myColor = Color.Blue;

System.out.println(myColor);

System.out.println("----------------");

for(Color color : Color.values()){

System.out.println(color);

}

}

}

运行结果:

Blue

----------------

Red

White

Blue

Black

2. enum使用switch

enum使用switch,可以提高代码的可读性。

public class EnumTest{

public static void doOp(OpConstant opConstant){

switch (opConstant){

case TURN_LEFT:

System.out.println("向左转");

break;

case TURN_RIGHT:

System.out.println("向右转");

break;

case SHOOT:

System.out.println("射击");

break;

}

}

public static void main(String[] args){

doOp(OpConstant.TURN_LEFT);

}

}

enum OpConstant{

TURN_LEFT, TURN_RIGHT, SHOOT

}

运行结果:

向左转

3. enum中添加新方法

要想使用penny("hello"), nickel("world");样式的枚举,就要实现

1) value属性

2) value属性的构造方法

3) getValue()方法

public enum Coin{

penny("hello"), nickel("world"), dime("welcome"), quarter("hello world");

private String value;

public String getValue(){

return value;

}

Coin(String value){

this.value = value;

}

public static void main(String[] args){

Coin coin = Coin.quarter;

System.out.println(coin.getValue());

}

}

public class ShowEnum{

public static void main(String[] args){

enumCompareTo(OpConstant.valueOf(args[0]));

}

public static void enumCompareTo(OpConstant constant){

System.out.println(constant);

for(OpConstant c : OpConstant.values()){

System.out.println(constant.compareTo(c));

}

}

}

运行输入参数:

TURN_RIGHT

运行结果:

TURN_RIGHT

1

0

-1

values()方法

ordinal()方法返回顺序

public class ShowEnum2{

public static void main(String[] args){

for(OpConstant c : OpConstant.values()){

System.out.printf("%d, %s, %n", c.ordinal(), c);

}

}

}

运行结果:

0, TURN_LEFT,

1, TURN_RIGHT,

2, SHOOT,

4. enumSet示例

1. EnumSet的of()方法和complementOf()方法

import java.util.EnumSet;

import java.util.Iterator;

enum FontConstant{

Plain, Bold, Italilc, Hello

}

public class EnumSetDemo{

public static void main(String[] args){

EnumSet enumSet = EnumSet.of(FontConstant.Plain);

showEnumSet(enumSet);

System.out.println("-------");

showEnumSet(EnumSet.complementOf(enumSet));

}

public static void showEnumSet(EnumSet enumSet) {

for(Iterator iter = enumSet.iterator(); iter.hasNext();){

System.out.println(iter.next());

}

}

}

运行结果:

Plain

-------

Bold

Italilc

Hello

2. EnumSet的noneOf()方法

import java.util.EnumSet;

import java.util.Iterator;

public class EnumSetDemo2{

public static void main(String[] args){

EnumSet enumSet = EnumSet.noneOf(FontConstant.class);

enumSet.add(FontConstant.Bold);

enumSet.add(FontConstant.Italilc);

showEnumSet(enumSet);

}

public static void showEnumSet(EnumSet enumSet){

for(Iterator iter = enumSet.iterator(); iter.hasNext();){

System.out.println(iter.next());

}

}

}

运行结果:

Bold

Italilc

3. EnumSet的copyOf()方法

import java.util.ArrayList;

import java.util.EnumSet;

import java.util.Iterator;

import java.util.List;

public class EnumSetDemo3{

public static void main(String[] args){

List list = new ArrayList();

list.add(FontConstant.Bold);

list.add(FontConstant.Italilc);

list.add(FontConstant.Plain);

showEnumSet(EnumSet.copyOf(list));

}

public static void showEnumSet(EnumSet enumSet){

for(Iterator iter = enumSet.iterator(); iter.hasNext();){

System.out.println(iter.next());

}

}

}

运行结果:

Plain

Bold

Italilc

5. enumMap示例

遍历的顺序和枚举的顺序一致。

import java.util.EnumMap;

import java.util.Map;

public class EnumMapDemo{

public static void main(String[] args){

Map map = new EnumMap(Action.class);

map.put(Action.TURN_RIGHT, "向右转");

map.put(Action.SHOOT, "射击");

map.put(Action.TURN_LEFT, "向左转");

for (Action action : Action.values()){

System.out.println(map.get(action));

}

}

}

enum Action{

TURN_LEFT, TURN_RIGHT, SHOOT;

}

运行结果:

向左转

向右转

射击

6. enum应用

枚举实际应用:控制权限。

public enum AccessRight{

MANAGER, DEPARTMENT, EMPLOYEE;

}

public class AccessControl{

public static boolean checkRight(AccessRight accessRight){

if(accessRight == AccessRight.MANAGER){

return true;

}

else if(accessRight == AccessRight.DEPARTMENT){

return false;

}

return false;

}

public static void main(String[] args){

AccessRight accessRight = AccessRight.valueOf("MANAGER");

System.out.println(checkRight(accessRight));

}

}

运行结果:

true

推荐博客:

https://blog.csdn.net/javazejian/article/details/71333103

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值