Fork me on GitHub

Java枚举Enum用法详解

前两篇博文对枚举处理器进行了详细的介绍,这里对枚举Enum的用法进行一个大致总结,以便于更好的理解代码逻辑。

还是以Enabled枚举类为例子进行汇总:

package com.example.simple.type;

public enum Enabled {
    enabled(1), //启用
    disabled(0);  //禁用
    private final int value;

    private Enabled(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

一、方法

方法 详解
Enabled.values()

以数组形式返回枚举类型的所有成员

 System.out.println(Enabled.values());

测试了一下上面代码实现方式不可行,并不能实现枚举类型成员实现,而要通过循环方式实现,如下:

for(Enabled enabled:Enabled.values()){
                System.out.println(enabled);
            }

或者:

for(int i = 0;i<Enabled.values().length ; i++){
                System.out.println(Enabled.values()[i]);
            }

测试结果为:

enabled
disabled

 
Enabled.valueOf(String string)

 根据普通字符串抓取到对应的枚举实例,普通字符串类型变为枚举类型

System.out.println(Enabled.valueOf("enabled"));

输出:

enabled

若变为:

System.out.println(Enabled.valueOf("aaa"));

会出现异常:

java.lang.IllegalArgumentException: No enum constant com.example.simple.type.Enabled.aaa

 
compareTo(Enabled enabled)

 比较两个枚举成员在定义时的顺序,通俗来说就是前后顺序

compare(Enabled.valueOf("enabled"));

public static void compare(Enabled enabled){
        for(int i = 0;i<Enabled.values().length ; i++){
            System.out.println(enabled+"和"+ Enabled.values()[i]
                    + "的比较结果是" + enabled.compareTo(Enabled.values()[i]));
        }
    }

测试结果为:

enabled和enabled的比较结果是0
enabled和disabled的比较结果是-1

如果枚举类中将enabled和disabled前后顺序倒过来,那么结果是:

enabled和disabled的比较结果是1
enabled和enabled的比较结果是0

 
Enabled.disabled

 获取到对应的枚举值disabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工,来一小行代码测试一下:

 System.out.println(Enabled.disabled);
 Enabled disabled = Enabled.disabled;
 System.out.println(disabled);

输出结果为:

disabled
disabled

 
Enabled.enabled
 获取到对应的枚举值enabled,其类型是Enabled,从枚举类中直接获取到此枚举,没进行任何加工。

ps:这里还有ordinal()函数,作用是获取一个成员在枚举中的索引位置。

for(int i=0;i<Enabled.values().length;i++)
        {
            System.out.println("索引"+Enabled.values()[i].ordinal()+",值:"+Enabled.values()[i]);
        }

测试结果为:

索引0,值:enabled
索引1,值:disabled

 至此,结束。

posted @ 2020-12-28 15:00  叶语婷  阅读(591)  评论(0编辑  收藏  举报