该示例是在百度上搜到的:
public class TestEnum{ /*最普通的枚举*/ public enum ColorSelect{ red, green, yellow, blue; } /* 枚举也可以象一般的类一样添做加方法和属性,你可以为它添加静态和非静态的属性或方法,这跟类的使用是一样的 */ public enum Season { // 枚举列表必须写在最前面,否则编译出错 winter, spring, summer, fall; private final static String location = "Phoenix"; public static Season getBest() { if (location.equals("Phoenix")) return winter; else return summer; } } /*还可以有构造方法*/ public enum Temp { /*通过括号赋值,而且必须有对应的带参构造器,否则编译出错 * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值 * 如果不赋值则不能写构造器,赋值编译也出错*/ absoluteZero(-459), freezing(32),boiling(212), paperBurns(451); private final int value; public int getValue() { return value; } //构造器默认也只能是private, 从而保证构造函数只能在内部使用 Temp(int value) { this.value = value; } } public static void main(String[] args) { /* * 枚举类型是一种类型,用于定义变量,以限制变量的赋值时通过"枚举名.值"来取得相关枚举中的值 */ ColorSelect m = ColorSelect.blue; switch (m) { /* * 注意:枚举重写了toString(),所以枚举变量的值是不带前缀的 * 所以为blue而非ColorSelect.blue */ case red: System.out.println("color is red"); break; case green: System.out.println("color is green"); break; case yellow: System.out.println("color is yellow"); break; case blue: System.out.println("color is blue"); break; } System.out.println("遍历ColorSelect中的值"); /*通过values()获得枚举值的数组*/ for (ColorSelect c : ColorSelect.values()) { System.out.println(c); } System.out.println("枚举ColorSelect中的值有:"+ColorSelect.values().length+"个"); /*ordinal()返回枚举值在枚举中的索引位置,从0开始*/ System.out.println(ColorSelect.red.ordinal());//0 System.out.println(ColorSelect.green.ordinal());//1 System.out.println(ColorSelect.yellow.ordinal());//2 System.out.println(ColorSelect.blue.ordinal());//3 /*枚举默认实现了java.lang.Comparable接口*/ System.out.println(ColorSelect.red.compareTo(ColorSelect.green)); System.out.println(Season.getBest()); for(Temp t:Temp.values()){ /*通过getValue()取得相关枚举的值*/ System.out.println(t+"的值是"+t.getValue()); } } }
1,枚举类型相当于特殊的类,经过编译之后同样产生一个class文件。枚举类型中可以定义方法(包括构造方法)、属性、静态的方法和属性、继承接口、重载覆盖等,类似于class。
2,枚举类型的定义:
public enum ColorSelect { red, green, yellow, blue; }
枚举类型使用enum来声明类型,枚举类型的每一个枚举值(枚举属性)都是枚举类型的实例,且都是public static final类型的实例。
3,枚举类型的继承:
(1),所有的枚举类型都隐含的继承自java.lang.Enum类,又因为Java是单继承的,所以一个枚举类型不能继承任何其他的类。
(2),枚举类型因为继承了java.lang.Enum类,又因为java.lang.Enum实现了java.lang.Comparable和java.io.Serializable接口,所以枚举类型也默认实现了这两个接口。
4,枚举类型的构造方法:
(1),必须是private访问权限,不能使public权限。这样就可以保证在枚举类型定义的外部无法使用new来创建枚举值。
(2),使用构造方法(当然是带参数的构造方法了!)赋值,则必须给所有的枚举值赋值;如果写了构造方法,却没有使用其用于赋值,则会报错。
5,继承自父类(java.lang.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()方法: 比较两个枚举类对象的引用。
6,枚举类型可以用于switch语句(见示例)。
7,枚举集合的使用:java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。
参考文章:
http://www.cnblogs.com/Fskjb/archive/2009/08/03/1537917.html
http://blog.csdn.net/sunxin1001/article/details/7532632
相关推荐
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
java枚举类型的定义使用介绍,还有示例。
NULL 博文链接:https://janeky.iteye.com/blog/463611
Java中的枚举类型Enum示例源代码,详见http://blog.csdn.net/snarlfuture/article/details/18996037
全面掌握java枚举类型(enum-type)1
主要介绍了Java枚举类型enum的详解及使用的相关资料,需要的朋友可以参考下
主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下
主要介绍了Java枚举(enum) 详解7种常见的用法,具有一定的参考价值,有需要的可以了解一下。
enum的全称为enumeration, 是 JDK 1.5中引入的新特性,存放在 java....下面这篇文章是我在使用enum过程中的一些经验和总结,分享出来方便大家快速的掌握Java中枚举(enum),有需要的朋友们下面跟着小编来一起看看吧。
介绍的是java中的枚举类型,对于枚举类型的相关知识,我们也介绍过不少方面的内容。希望本文能够给你带来帮助,下面来一起看看,有需要的可以参考借鉴。
Java 枚举(enum) Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。 Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。 ...
ava enum 枚举的spring boot2.x完美实现demo源码。java的枚举类型,可以理解为一种特殊的java类
javaenum源代码
采用java 应用程序的方式搭建简单的jdbc项目,JDBC简单入门之枚举(Enum)、泛型、反射、JDBC整合
我想几乎每一个学习Java语言的人在学习枚举的时候首先的一个疑问就是“为什么不用static final字段替代?”,有这个疑问就说明你已经摸索到了枚举类型的最主要功能......
java高级编程 Enum枚举 包括枚举的例子,问题 及一些文档,是复习的好资源
其中,EnumName表示枚举类型的名称,CONSTANT1、CONSTANT2、……、CONSTANTN表示枚举类型中的常量值。每个常量值都必须是合法的标识符,通常使用大写字母表示。 enum EnumName { CONSTANT1, CONSTANT2, ..., ...
讲述了java中的枚举类型的用法,深入枚举类型
Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 定义了一个季节枚举类型。 在本例中,对于Season.SPRING这个...
枚举简介 适用于初学Java