首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Linux频道
中国IT教育
 
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 新手入门 >> 基础入门 >> 文章正文

Java5 枚举类型使用总结

文章来源51cto博客 作者熔岩 更新时间2008-5-9 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 13:59:47
* 说明接口
*/
public interface IDesc {
    /**
     * 获取说明信息
     * @return String
     */
    public String getDesc();
}
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 13:43:22
* 实现了接口的枚举类型
*/
public enum SharpShooter_5 implements IDesc {
    LOCKED("锁定目标"),
    AIM("瞄准目标"),
    SHOOT("射击");

    private String desc;        //枚举说明

    /**
     * 私有的构造方法
     */
    private SharpShooter_5(String desc) {
        this.desc = desc;
    }

    public String getDesc() {
        return desc;
    }
}
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:03:26
* 测试实现了接口的枚举类型
*/
public class TestDemo_5 {
    public static void main(String args[]) {
        for (SharpShooter_5 enumSS : SharpShooter_5.values()) {
            System.out.println(enumSS + " " + enumSS.getDesc());
        }
    }
}
 
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击

Process finished with exit code 0

4、每个枚举值实现的自己的接口

 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:05:48
* 每个枚举值自己实现接口
*/
public enum SharpShooter_6 implements IDesc {
    LOCKED(){
        public String getDesc() {
            return "锁定目标";
        }
    },

    AIM{
        public String getDesc() {
            return "瞄准目标";
        }
    },

    SHOOT{
        public String getDesc() {
            return "射击";
        }
    }
}
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:10:28
* 测试每个枚举值自己实现接口
*/
public class TestDemo_6 {
    public static void main(String args[]) {
        for (SharpShooter_6 enumSS : SharpShooter_6.values()) {
            System.out.println(enumSS + " " + enumSS.getDesc());
        }
    }
}
 
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击

Process finished with exit code 0
 
5、带有抽象方法的枚举类型
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:13:25
* 带有抽象方法的枚举类型
*/
public enum SharpShooter_7 {
    LOCKED(){
        public String getDesc() {
            return "锁定目标";
        }
    },

    AIM{
        public String getDesc() {
            return "瞄准目标";
        }
    },

    SHOOT{
        public String getDesc() {
            return "射击";
        }
    };

    /**
     * 抽象方法,每个枚举值都必须自己实现
     *
     * @return String
     */
    public abstract String getDesc();
}
 
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-29
* Time: 14:16:56
* 测试带有抽象方法的枚举类型
*/
public class TestDemo_7 {
    public static void main(String args[]) {
        for (SharpShooter_7 enumSS : SharpShooter_7.values()) {
            System.out.println(enumSS + " " + enumSS.getDesc());
        }
    }
}
 
运行结果:
LOCKED 锁定目标
AIM 瞄准目标
SHOOT 射击

Process finished with exit code 0
 
六、对Java枚举类型的一些看法
 
枚举的本质是类,在没有枚举之前,仍然可以按照java最基本的编程手段来解决需要用到枚举的地方。枚举屏蔽了枚举值的类型信息,不像在用public static final定义变量必须指定类型。枚举是用来构建常量数据结构的模板,这个模板可扩展。枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时候,编译器会报错。枚举的更多用法还需要在开发中去研究创造,Java5、Java6增加了不少新的特性,技术在升级,对程序员来说就要学习,如果你热爱java的话。否则别人用到新特性的代码你看不懂,那才叫郁闷。
 
目前,本人在开发中也很少用到枚举,虽然Java设计得很好,处心积虑为开发人员着想,但是是否有必要增加一个关键字让全世界的java程序员去学习研究?本人感觉Java现在越来越复杂了,新特性对我而言是一大障碍,需要大量的时间去熟悉?对此,我也不敢妄下结论,一是我们和java科学家差距太大,二是怕误导读者,这个就留个各位读者吧!

上一页  [1] [2] [3] 

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题
 ·展现C#世界 C#程序设计专题
 ·Java入门 Tomcat的配置技巧精华专题
 ·Oracle RMAN物理备份技术详解
 今日更新
· Java5 枚举类型使用总结
· Java初学者都必须理解的六大问题
· 给学Java的大学生们分享一些经验
· Spring数据源的灵活配置巧应用
· 关于Java中的main()方法详解
· 对java提供的两个Map进行性能测试
· 开始EJB3应用程序的开发
· 关于Java—JDBC常用类和方法
· Spring 与 Log4J 进行动态日志配置切换
· Hibernate的映射关联关系
 社区讨论
 博客论点
 频道精选
· 新版CCNA考试大纲 07年8月1日生效
· 新手学习宝典:Linux常用命令全集
· 知已知彼,深入了解系统安全知识
· 从入门到精通 java初学者实践系列教程
· 共同学习——Oracle入门基础专题
· ADO.net与PowerBuilder的综合比较
· 评论:中国互联网“钱”途何在?
· 中科院:龙芯要成"中国奔腾" 能卖1亿颗
 Java 频道导航
新手入门
安装配置 | 开发工具 | JDK | oop面向对象
核心技术
SwingAwtApplet | 高级编程 | 网络编程Jvm技术 | JavaMedia
高级技术
设计模式 | UML/OO | p2p/Jxta | 多线程 | JavaSecurity
J2EE
J2ee核心 | Servlet/Jsp | EJB
| JDBC/JDO | Rmi/Corba/Jini | Mvcwea | 应用服务器
J2ME
核心技术 | 嵌入式 | 无线开发
Java&XML
XMLBeans | WebServices
开源技术
ANT | Struts | Hibernate | Spring
Eclipse | JBoss | Tomcat | JUnit
其他技术