• Java的枚举类型


    Java的枚举类型

    简介

    有时候,变量的取值只在一个有限的集合内。例如,销售的服装或比萨只有小、中、大和超大这四种尺寸。当然,可以将这些尺寸分别编码为1、2、3、4或S、M、L、X。。但这种设置很容易出错。很可能在变量中给保存的是一个错误的值如(0或m)。

    针对这种情况,可以自定义枚举类型。枚举类型包括有限个命名的值。例如:

    enum Size{
        SMALL,MEDIUM,LARGE,EXTRA_LARGE
    }
    
    • 1
    • 2
    • 3

    现在,可以声明这种类型的变量:

    Size s = Size.MEDIUM
    
    • 1

    Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者特殊值null,null表示这个变量没有设置任何值。

    其他用法

    在上面典型例子:

    enum Size{
        SMALL,MEDIUM,LARGE,EXTRA_LARGE
    }
    
    • 1
    • 2
    • 3

    实际上,这个声明定义的类型是一个类,他刚好有四个实例,不可能构造新的对象。

    因此,在比较两个枚举类型的值时,并不需要调用equals,直接使用==就可以了。

    如果需要的话,可以为枚举类型增加构造器,方法和字段。当然构造器只是在构造枚举常量的时候调用。下面是一个示例:

    public enum Size{
    SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
    	private String abbreviation;
    	private Size(String abbreviation)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    枚举的构造器总是私有的。可以省略private修饰符。如果声明一个enum构造器为public或者protected,会出现语法错误

    所有的枚举类都是Enum类的子类。他们继承了这个类的许多方法:

    • static Enum valueOF(Class enumClass,String name)
      • 返回给定类中有指定名字的枚举类型
    • String toString()
      • 返回枚举常量型
    • int ordinal()
      • 返回枚举常量在声明中的位置,位置从0开始
    • int comparaTo(E other)
      • 如果枚举常量出现在other之前,返回一个负整数;如果this==other,则返回0;否则返回一个正整数。枚举常量的出现次序在声明中给出.
  • 相关阅读:
    线性时间选择(含平均O(n)和最坏O(n)算法)
    013-json
    Kubernetes快速部署
    深入理解JVM虚拟机第二十四篇:详解JVM当中的动态链接和常量池的作用
    【youcans 的 OpenCV 例程200篇】180.基于距离变换的分水岭算法
    Android-Fragment知识详解
    Win11最新KB5019980(22621.819)更新内容详解
    赶紧进来!!!满满干货!!详解C语言指针(初阶)
    Tomcat 相关面试题,看这篇!
    毫米波传感器原理介绍:测距
  • 原文地址:https://blog.csdn.net/Go_ahead_forever/article/details/133619652