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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段浩亮 中级黑马   /  2012-3-19 14:46  /  1570 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义顾客类型的源码是这样的:
public enum CustomerType {
        COMMON,EXPRESS,VIP;
        public String toString(){
                String name = null;
                switch(this){
                case COMMON:
                        name = "普通";
                        break;
                case EXPRESS:
                        name = "快速";
                        break;
                case VIP:
                        name = name();
                        break;
                }
                return name;
        }
}
我想问的是switch(a){}  a的类型不是只能是byte,short,int,char四种类型吗?为什么在这里可以接受枚举类型?

4 个回复

倒序浏览
switch(a) 要接受的是常量,而 枚举类型中定义的类型就是常量
回复 使用道具 举报
这是Java5的新特性,Java5之后switch()可以接受枚举类型了
回复 使用道具 举报
枚举,本来是C++中的元老,java本来是没有这些东西的,可是后来为了完善java的API架构,更方便的让我们使用java开放程序,又加入了枚举,它使得程序提高了安全性,也简化了书写。
至于为什么能够接收枚举,这也是因为枚举成为了固定取值的对象,switch能够接收这样的参数也是将枚举拉入java阵营的需要啊。
其实,将枚举应用于switch就是一个固定的应用。
回复 使用道具 举报
switch后只能用byte,short,int,char,jdk5.0以后,还可以用枚举类型,这是java的规范
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马