java中enum工具类有哪些?怎么用枚举设置常量?

BSO 2020-11-11 15:45:22 java常见问答 6670

相信很多学习java知识的小伙伴都会发现,java中关于枚举的知识是很详细的,而且涉及的方面也是非常广泛的。今天就来为大家介绍一下java中关于枚举工具类的有关内容,一起来了解一下吧。

首先说一下java中enum工具类有哪些?

有EnumSet和EnumMap

Java中提供了两个方便操作enum的工具类——EnumSet和EnumMap。

EnumSet是枚举类型的高性能Set实现。它要求放入它的枚举常量必须属于同一枚举类型。

EnumMap是专门为枚举类型量身定做的Map实现。虽然使用其它的Map实现(如HashMap)也能完成枚举类型实例到值得映射,但是使用EnumMap会更加高效:它只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以EnumMap 使用数组来存放与枚举类型对应的值。这使得EnumMap的效率非常高。代码如下所示:

// EnumSet的使用
System.out.println("EnumSet展示");
EnumSet < ErrorCodeEn > errSet = EnumSet.allOf(ErrorCodeEn.class);
for (ErrorCodeEn e: errSet)
{
    System.out.println(e.name() + " : " + e.ordinal());
}
// EnumMap的使用
System.out.println("EnumMap展示");
EnumMap < StateMachine.Signal, String > errMap = new EnumMap(StateMachine.Signal.class);
errMap.put(StateMachine.Signal.RED, "红灯");
errMap.put(StateMachine.Signal.YELLOW, "黄灯");
errMap.put(StateMachine.Signal.GREEN, "绿灯");
for (Iterator < Map.Entry < StateMachine.Signal, String >> iter = errMap.entrySet()
    .iterator(); iter.hasNext();)
{
    Map.Entry < StateMachine.Signal, String > entry = iter.next();
    System.out.println(entry.getKey()
        .name() + " : " + entry.getValue());
}

需要注意的是,枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。此外,枚举类型还提供了安全检查功能。枚举类型本质上还是以类的形式存在。

接下来介绍一下,使用枚举类型设置常量

以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用了,并且该常量不能被修改,因为在接口中定义的常量时,该常量的修饰符为final与static。代码如下所示:

public interface Constants
{
    public static final int RED = 1;
    public static final int BLUE = 2;
    public static final int GREEN = 3;
}

使用枚举定义常量的语法如下:代码如下所示:

public enum ColorEnum
{
    RED
    , BLUE
    , GREEN
}

命名规范:

final常量:使用大写字母命名,并且中间使用下划线进行连接。

enum枚举:使用大写字母命名,并且中间使用下划线进行连接。

示例:枚举类型的使用。代码如下所示:

public static void doit(ColorEnum c)
{
    switch (c)
    {
    case RED:
        System.out.println("This is RED");
        break;
    case BLUE:
        System.out.println("This is BLUE");
        break;
    case GREEN:
        System.out.println("This is GREEN");
        break;
    default:
        break;
    }
}
public static void main(String[] args)
{
    doit(ColorEnum.RED);
}

总体上来说,java中关于枚举的知识是非常多的,而且划分的也是非常详细的。可以看出设置常量操作还是比较简单的。想要了解更多java基础,敬请关注奇Q工具网。

推荐阅读:

java中枚举的应用场景有哪些?详细解析

java中枚举的特性是什么?如何赋值?

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