博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 枚举
阅读量:5233 次
发布时间:2019-06-14

本文共 2687 字,大约阅读时间需要 8 分钟。

一、为什么使用枚举

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

面对这样的常量我们往往使用 public   final   static   去定义,而使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单!

二、枚举的特点

   1.枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

   2.他是个普通的类,它已经继承了Enum (java 是单继承)所以他不能继承其他类了。

 

1 public enum EnumTest { 2     //使用枚举定义常量 3     RED(1), GREEN(2) , YELLOW(3) ; 4     private int code; 5     // 构造函数,枚举类型只能为私有 6     private EnumTest(int code){ 7         this.code=code; 8     } 9     public String toString(){10         return String.valueOf(this.code);11     }12      /**13      *   演示枚举类型的遍历14      */15     private static void testTraversalEnum() {16         EnumTest[] enumTest = EnumTest.values ();17        for (EnumTest eEnumTest : enumTest) {18           System. out .println( " 当前灯 name : " + eEnumTest.name());19           System. out .println( " 当前灯: " + eEnumTest);20           System. out .println( " 当前灯 ordinal : " + eEnumTest.ordinal());21       }22    }23     /**24      *   演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型25      */26     private static void testEnumMap() {27        // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是 key 的类的类型28       EnumMap
currEnumMap = new EnumMap
(EnumTest.class );29 currEnumMap.put(EnumTest.RED , "红灯");30 currEnumMap.put(EnumTest.GREEN , "绿灯");31 currEnumMap.put(EnumTest.YELLOW , "黄灯");32 // 2. 遍历对象33 for (EnumTest aEnumTest : EnumTest.values ()) {34 System. out .println( "[key=" + aEnumTest.name() + ",value="+ currEnumMap.get(aEnumTest) + "]" );35 }36 }37 /**38 * 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容
39 * 可以使用 allOf 方法40 */41 private static void testEnumSet() {42 EnumSet
currEnumSet = EnumSet.allOf (EnumTest.class );43 for (EnumTest aEnumTestSetElement : currEnumSet) {44 System. out .println( " 当前 EnumSet 中数据为: " + aEnumTestSetElement);45 }46 }47 /**48 * switch与enum的结合使用 49 */50 private static void testsWitch() {51 EnumTest switchState = EnumTest.RED; 52 switch (switchState) { 53 case RED: 54 System.out.println("RED"); 55 break; 56 case GREEN: 57 System.out.println("GREEN"); 58 break; 59 default:60 System.out.println("YELLOW"); 61 break; 62 }63 }64 public static void main(String[] args) {65 testTraversalEnum();66 testEnumMap();67 testEnumSet();68 testsWitch();69 }70 }

 

转载于:https://www.cnblogs.com/jalja/p/5004388.html

你可能感兴趣的文章
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>