• 技术文章 >java >java基础

    java enum使用方法有几种

    小妮浅浅小妮浅浅2021-01-07 10:57:57原创2435

    作为枚举中的一个基础类,是使用的方法中也有很多种,比如它能对枚举进行说明,在知识点上和之前所学的接口、静态方法等都能有所联系。接下来我们对Enum类使用的一些范围进行说明,然后带来几种Enum类常见使用方法的介绍,最后就其中的compareTo()方法带来实例讲解。

    1.Enum类的说明

    Enum类有两个成员变量:name和ordinal。其中,name用于记录枚举常量的名字。比如APPLE、ORANGE和BANANA。ordinal用于记录枚举常量在声明时的顺序(从0开始)。比如APPLE是0、ORANGE是1、BANANA是2。

    Enum类有一个构造函数,它有两个入参,分别为name和ordianl赋值。

    Enum类重写了toString()方法,返回枚举常量的name值。

    Enum类重写了equals()方法,直接用等号比较。

    Enum类不允许克隆,clone()方法直接抛出异常。(保证枚举永远是单例的)

    Enum类实现了Comparable接口,直接比较枚举常量的ordinal的值。

    Enum类有一个静态的valueOf()方法,可以根据枚举类型以及name返回对应的枚举常量。

    Enum类不允许反序列化,为了保证枚举永远是单例的。

    2.Enum常见方法

    1)ordinal()方法:该方法获取的是枚举变量在枚举类中声明的顺序,下标从0开始,如日期中的MONDAY在第一个位置,那么MONDAY的ordinal值就是0,如果MONDAY的声明位置发生变化,那么ordinal方法获取到的值也随之变化,注意在大多数情况下我们都不应该首先使用该方法,毕竟它总是变幻莫测的。

    2)compareTo(E o)方法:比较枚举的大小,注意其内部实现是根据每个枚举的ordinal值大小进行比较的。

    3)name()方法与toString():几乎是等同的,都是输出变量的字符串形式。

    4)getDeclaringClass(): 返回该枚举变量所在的枚举类。

    3.实例

    以上面的compareTo()为例

     public static void main(String[] args) {
            //通过values()获取枚举数组
            Week[] weeks = Week.values();
            //遍历Week枚举类
            for (Week day : weeks) {
                System.out.println("name:" + day.name() +
                        ",desc:" + day.getDesc());
            }
            //不符合则抛出java.lang.IllegalArgumentException
            System.out.println(Week.valueOf("MONDAY"));
            //返回对应的name属性
            System.out.println(Week.FRIDAY.toString());
            //返回4,根据我们定义的次序,从0开始。如果在定义时调换FRIDAY
            //的次序,返回的数字也会对应的变化
            System.out.println(Week.FRIDAY.ordinal());
        }

    输出:

    name:MONDAY,desc:星期一
    name:TUESDAY,desc:星期二
    name:WEDNESDAY,desc:星期三
    name:THURSDAY,desc:星期四
    name:FRIDAY,desc:星期五
    name:SATURDAY,desc:星期六
    name:SUNDAY,desc:星期日
    今天星期一
    今天星期五
    4

    以上就是java中关于enum使用方法的介绍,相信大家对ordinal()、compareTo(E o)等方法都有了初步的了解,更多enum方法的使用,也会在接下来的文章中展现给大家。

    专题推荐:java enum使用方法
    品易云
    上一篇:java枚举是什么 下一篇:java枚举中的values遍历

    相关文章推荐

    • java枚举是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网