java中关于枚举的知识点也是非常多的,枚举中的知识点可以细分成很多部分,想要全部掌握还是比较花费时间的。今天主要来简述一下枚举的一些基本的概念和方法,一起来了解一下吧。
首先说一下,枚举的概念。
enum的全称为enumeration, 是JDK 1.5中引入的新特性。在Java中,被 enum关键字修饰的类型就是枚举类型。代码如下所示:
enum Color { RED , GREEN , BLUE }
如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以Color枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2。
枚举的好处:可以将常量组织起来,统一进行管理。
枚举的典型应用场景:错误码、状态机等。
枚举类型的本质
尽管enum看起来像是一种新的数据类型,事实上,enum是一种受限制的类,并且具有自己的方法。
创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum。
java.lang.Enum类声明,代码如下所示:
public abstract class Enum < E extends Enum < E >> implements Comparable < E > , Serializable { ... }
接下来介绍一下,枚举的方法
在enum中,提供了一些基本方法:
1.values():返回enum实例的数组,而且该数组中的元素严格保持在enum中声明时的顺序。
2.name():返回实例名。
3.ordinal():返回实例声明时的次序,从0开始。
4.getDeclaringClass():返回实例所属的enum类型。
5.equals() :判断是否为同一个对象。
可以使用==来比较enum实例。
此外,java.lang.Enum实现了Comparable和Serializable接口,所以也提供compareTo()方法。
举例说明:展示enum的基本方法,代码展示如下:
public class EnumMethodDemo { enum Color { RED , GREEN , BLUE; } enum Size { BIG , MIDDLE , SMALL; } public static void main(String args[]) { System.out.println("=========== Print all Color ==========="); for (Color c: Color.values()) { System.out.println(c + " ordinal: " + c.ordinal()); } System.out.println("=========== Print all Size ==========="); for (Size s: Size.values()) { System.out.println(s + " ordinal: " + s.ordinal()); } Color green = Color.GREEN; System.out.println("green name(): " + green.name()); System.out.println("green getDeclaringClass(): " + green.getDeclaringClass()); System.out.println("green hashCode(): " + green.hashCode()); System.out.println("green compareTo Color.GREEN: " + green.compareTo(Color.GREEN)); System.out.println("green equals Color.GREEN: " + green.equals(Color.GREEN)); System.out.println("green equals Size.MIDDLE: " + green.equals(Size.MIDDLE)); System.out.println("green equals 1: " + green.equals(1)); System.out.format("green == Color.BLUE: %b\n", green == Color.BLUE); } }
输出结果:
=== === === == Print all Color === === === == RED ordinal: 0 GREEN ordinal: 1 BLUE ordinal: 2 === === === == Print all Size === === === == BIG ordinal: 0 MIDDLE ordinal: 1 SMALL ordinal: 2 green name(): GREEN green getDeclaringClass(): class org.zp.javase.enumeration.EnumDemo$Color green hashCode(): 460141958 green compareTo Color.GREEN: 0 green equals Color.GREEN: true green equals Size.MIDDLE: false green equals 1: false green == Color.BLUE: false
java中枚举的概念还是非常丰富的,它的方法也是比较多的。大家有兴趣的话可以多了解一下这方面的知识。想要了解更多java常见问题,敬请关注奇Q工具网。
推荐阅读: