java 枚举

来源:互联网 发布:金蝶易记账数据库类型 编辑:程序博客网 时间:2024/04/28 04:22
package Ttest;public class Enum_Test{ /*最普通的枚举*/public enum ColorSelected{red, green, blue, yellow}/* 枚举也可以象一般的类一样添加方法和属性 * ,你可以为它添加静态和非静态的属性或方法, * 这一切都象你在一般的类中做的那样. */public enum Season{  // 枚举列表必须写在最前面,否则编译出错spring, summer, fall, winter;static String location = "hangzhou";public static Season getLocation() {if (location.equals("hangzhou")) {return fall;}return summer;}}//带构造方法的枚举public enum Temp{/*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错         * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值         * 如果不赋值则不能写构造器,赋值编译也出错*/a(13),b(14),c(15);private final int value;public  int getValue() {return value;} //构造器默认也只能是private, 从而保证构造函数只能在内部使用Temp(int value){this.value = value;}}public static void main(String[] args) {/*         * 枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过"枚举名.值"来取得相关枚举中的值         */ColorSelected color = ColorSelected.blue;switch (color) {   /*注意:枚举重写了ToString(),说以枚举变量的值是不带前缀的         *所以为blue而非ColorSelect.blue         */case blue:System.out.println("i chose blue");break;case red:System.out.println("i chose red");break;default:System.out.println("i chose what i really don't like one");break;}//增强的for循环System.out.println("遍历ColorSelected中的值"); /*通过values()获得枚举值的数组*/for(ColorSelected tempcColorSelected : ColorSelected.values()){System.out.println(tempcColorSelected);}/*ordinal()返回枚举值在枚举中的索引位置,从0开始*/System.out.println(ColorSelected.blue.ordinal());  /*枚举默认实现了java.lang.Comparable接口*/ System.out.println(ColorSelected.red.compareTo(ColorSelected.blue));System.out.println(Season.getLocation());for(Temp t:Temp.values()){System.out.print(t.getValue()+"   ");}} }


像定义类一样去定义枚举类型,ColorSelected枚举类是一个类,而且是一个不可继承的final类,其枚举值也是静态常量。  

ColorSelected color = ColorSelected.blue;  

就是创建了一个实例


构造器只能私有private,绝对不允许有public构造器。 这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 但枚举类的方法和数据域可以允许外部访问。


、所有枚举类都继承了Enum的方法,下面我们详细介绍这些方法。 

  (1)  ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定。
                 Color.RED.ordinal();  //返回结果:0
                 Color.BLUE.ordinal();  //返回结果:1
       (2)  compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。(具体可见源代码)
                 Color.RED.compareTo(Color.BLUE);  //返回结果 -1
       (3)  values()方法: 静态方法,返回一个包含全部枚举值的数组。
                 Color[] colors=Color.values();
                 for(Color c:colors){
                        System.out.print(c+","); 
                 }//返回结果:RED,BLUE,BLACK YELLOW,GREEN,
       (4)  toString()方法: 返回枚举常量的名称。
                 Color c=Color.RED;
                 System.out.println(c);//返回结果: RED
       (5)  valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量。
                 Color.valueOf("BLUE");   //返回结果: Color.BLUE
       (6)  equals()方法: 比较两个枚举类对象的引用。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 全棉衣服上的油怎么办 高腰牛仔裤腰大了怎么办 新买衣服太硬怎么办 棉麻的衣服发硬怎么办 新衣服太硬怎么办雪纺 衣服硬的咯人怎么办 脖子上的勒痕怎么办 腿上容易出现勒痕怎么办 身上总有内裤印怎么办 内裤穿出了印怎么办 饮水机热水口不出水怎么办 饮水机热水口出水小怎么办 新饮水机热水口出水小怎么办 白钢水桶中间支撑怎么办 17岁想长高应该怎么办 身子瘦但脸胖怎么办 减肥只瘦了胸是怎么办 减肥把胸瘦了怎么办 脸又大又圆怎么办 想长高又想减肥怎么办 孩子做作业精力不集中怎么办 写作业老要睡觉怎么办 孩子写作业精神不集中怎么办 小孩精神不集中要怎么办 注意力不集中上课走神怎么办 注意力不集中总是走神怎么办 孩子注意力不集中走神怎么办 上课老走神注意力不集中怎么办 注意力不集中老走神怎么办 7岁儿童视力0.6怎么办 三岁宝宝注意力不集中怎么办 四岁宝宝注意力不集中怎么办 一直在想一件事怎么办 买的家具味道大怎么办 买的木床有味道怎么办 宝宝拍胸片衣服有扣子怎么办 前扣内衣扣子坏了怎么办 运动内衣穿上平胸怎么办 文胸的海绵变形了怎么办 文胸背部松紧变形了怎么办 黑色裤子被漂白水漂红了怎么办