Java中枚举enum_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中枚举enum

Java中枚举enum

 2018/10/16 12:45:27  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.enum用于常量在JDK1.5之前可以使用publicstaticfinal来定义常量,现在可以使用enum,而且枚举提供了比常量更多的方法。publicenumColor{Red,White,Blue,Black}publicclassColorTest{publicstaticvoidmain(String[]args){ColormyColor=Color.Blue;System.out.println(myColor);System.out.println("-----------
  • 标签:Java 枚举
1. enum用于常量
class="java" name="code">
在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<FontConstant> enumSet = EnumSet.of(FontConstant.Plain);
        showEnumSet(enumSet);
        System.out.println("-------");
        showEnumSet(EnumSet.complementOf(enumSet));
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet) {
        for(Iterator<FontConstant> 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<FontConstant> enumSet = EnumSet.noneOf(FontConstant.class);
        enumSet.add(FontConstant.Bold);
        enumSet.add(FontConstant.Italilc);
        showEnumSet(enumSet);
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet){
        for(Iterator<FontConstant> 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<FontConstant> list = new ArrayList<FontConstant>();
        list.add(FontConstant.Bold);
        list.add(FontConstant.Italilc);
        list.add(FontConstant.Plain);
        showEnumSet(EnumSet.copyOf(list));
    }
    public static void showEnumSet(EnumSet<FontConstant> enumSet){
        for(Iterator<FontConstant> 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<Action, String> map = new EnumMap<Action, String>(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
发表评论
用户名: 匿名