A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯盼 中级黑马   /  2012-12-3 22:37  /  1159 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚看张老师视频中以类模拟枚举,需要写那么多代码,难道真正的枚举其实就是这么实现的么?

1 个回复

倒序浏览
Java 枚举7常见种用法

用法一:常量
public enum Color {  
RED, GREEN, BLANK, YELLOW  
}  
用法二:switch
enum Signal {
        GREEN, YELLOW, RED
}
public class TrafficLight {
        Signal color = Signal.RED;
        public void change() {
                switch (color) {
                case RED:
                        color = Signal.GREEN;
                        break;
                case YELLOW:
                        color = Signal.RED;
                        break;
                case GREEN:
                        color = Signal.YELLOW;
                        break;
                }
        }
}
用法三:向枚举中添加新方法
public enum Color {
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
                this.name = name;
                this.index = index;
        }
        // 普通方法
        public static String getName(int index) {
                for (Color c : Color.values()) {
                        if (c.getIndex() == index) {
                                return c.name;
                        }
                }
                return null;
        }
        // get set 方法
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getIndex() {
                return index;
        }
        public void setIndex(int index) {
                this.index = index;
        }
}
用法四:覆盖枚举的方法
public enum Color {
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
                this.name = name;
                this.index = index;
        }
        //覆盖方法
        @Override
        public String toString() {
                return this.index+"_"+this.name;
        }
}
用法五:实现接口
public interface Behaviour {
        void print();
        String getInfo();
}
public enum Color implements Behaviour{
        RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
        // 成员变量
        private String name;
        private int index;
        // 构造方法
        private Color(String name, int index) {
                this.name = name;
                this.index = index;
        }
//接口方法
        @Override
        public String getInfo() {
                return this.name;
        }
        //接口方法
        @Override
        public void print() {
                System.out.println(this.index+":"+this.name);
        }
}
用法六:使用接口组织枚举
public interface Food {
        enum Coffee implements Food{
                BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
        }
        enum Dessert implements Food{
                FRUIT, CAKE, GELATO
        }
}
用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马