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

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

首先先理解一下java中枚举的本质。

java的世界中一切皆是类,下面通过一个例子解释一下enum的本质:

package cn.xnchall.enumeration;public class Grade {        public void test() {        print(grade.A);    }            public void print(grade g) {   //print A B C D E            }}/*class grade{    private grade(){}        public static final grade A = new grade();    public static final grade B = new grade();    public static final grade C = new grade();    public static final grade D = new grade();    public static final grade E = new grade();}*/enum grade{    //class    A,B,C,D,E;    //object}

grade类和grade枚举类型作用是一样的,就是说枚举类型是一个比较严格的类。它不允许在外部new grade类,因为底层实现是private的。外部要想实现new操作,必须在grade的内部实现。

下面正式介绍enumeration!

1.定义枚举的构造函数、方法和字段

 
package cn.xnchall.enumeration;public class Dome {        public static void test() {        print(grade.A);    }            public static void print(grade g) {   //print A B C D E        System.out.println(g.getValue());    }        public static void main(String[] args){        test();    }}/*class grade{    private grade(){}        public static final grade A = new grade();    public static final grade B = new grade();    public static final grade C = new grade();    public static final grade D = new grade();    public static final grade E = new grade();}*/enum grade{   //class   A 100-90 B 89-80 C 79-70 D 69-60 E 59-0    A("100-90")        ,B("89-80")        ,C("79-70")        ,D("69-60")        ,E("59-0")    ;        private String value; //每个字段的分数    private grade(String value) {        this.value = value;    }        public String getValue() {        return this.value;    }}
 

 

 

上面将会执行得到的结果是:100-90

未完待续

将会补充:带有抽象方法的枚举

 

2.带有抽象方法的枚举

package cn.xnchall.enumeration;public class Dome {        public static void test() {        print(grade.A);    }            public static void print(grade g) {   //print A B C D E        System.out.println(g.vValue());    }        public static void main(String[] args){        test();    }}/*class grade{    private grade(){}        public static final grade A = new grade();    public static final grade B = new grade();    public static final grade C = new grade();    public static final grade D = new grade();    public static final grade E = new grade();}*/enum grade{   //class   A 100-90优秀 B 89-80良好 C 79-70一般 D 69-60及格 E 59-0不及格    A("100-90"){        public String vValue() {            return "优秀";        }    }        ,B("89-80"){        public String vValue() {            return "良好";        }    }        ,C("79-70"){        public String vValue() {            return "一般";        }    }        ,D("69-60"){        public String vValue() {            return "及格";        }    }        ,E("59-0"){        public String vValue() {            return "不及格";        }    }    ;        private String value; //每个字段的分数    private grade(String value) {        this.value = value;    }        public String getValue() {        return this.value;    }        public abstract String vValue();}

上面代码执行的结果是:优秀

仔细研究上面的代码,很容易理解。

 

 

总之,java的世界“一切皆是类”,枚举就是枚举类,它里边的数据就是枚举的对象。当然了它也具有类的其他属性。

转载于:https://www.cnblogs.com/xnchll/p/4786965.html

你可能感兴趣的文章
lrzsz——一款好用的文件互传工具
查看>>
ZPL语言完成条形码的打印
查看>>
这20件事千万不要对自己做!
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
玩转小程序之文件读写
查看>>
HashPump用法
查看>>
cuda基础
查看>>
virutalenv一次行安装多个requirements里的文件
查看>>
Vue安装准备工作
查看>>
.NET 母版页 讲解
查看>>
Android Bitmap 和 Canvas详解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
导入导出数据库和导入导出数据库表
查看>>
linux下操作mysql
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
高并发系统数据库设计
查看>>