java枚举的概念是什么?有哪些方法?

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工具网。

推荐阅读:

java枚举类,实例代码分享

java中的声明枚举,详细解析

java枚举中实现接口和使用接口,实例展示