• Java 枚举


    目录

    一、枚举简介

    二、枚举作用

    三、枚举类常用方法

    四、语法

    五、示例

    5.1 、示例1

    5.2 、示例2

    5.3 、示例3


    一、枚举简介

            枚举类型是一种特殊的数据类型,它允许变量是一组预定义的常量。变量必须等于其预定义的值之一。

            在生活中有很多关于枚举的例子,例如表示星期的 SUNDAY(星期日)、 MONDAY (星期一)、TUESDAY(星期二)、 WEDNESDAY (星期三)、THURSDAY(星期四)、 FRIDAY (星期五)、SATURDAY(星期六) 就可以定义一个枚举。

            或者关于月份 JANUARY(一月)、FEBRUARY(二月) 、MARCH(三月)、APRIL(四月)、MAY(五月)、JUNE (六月)、JULY(七月)、AUGUST(八月)、SEPTEMBER(九月)、OCTOBER(十月)、NOVEMBER(十一月)、DECEMBER(十二)也可以定义一个枚举。

    二、枚举作用

        enum 枚举名称 {}

            1、通过类型可以限制一个内容的取值范围。

            2、作为类型检查,有效期检查。

            3、和常量相比,编码简单明了。

                    需要注意的是枚举不支持继承。

    三、枚举类常用方法

    方法描述
    final String name()返回此枚举常量的名称
    final int ordinal()返回此枚举常量的序号
    Class getDeclaringClass()返回对应于此枚举常量的Class对象
    T valueOf(Class enumType, String name)返回指定名称枚举

    四、语法

    enum 枚举名称 {}

    五、示例

    5.1 、示例1

            常用方法使用。

    1. public enum WeekEnum {
    2. SUNDAY, // 星期日
    3. MONDAY,// 星期一
    4. TUESDAY,// 星期二
    5. WEDNESDAY,// 星期三
    6. THURSDAY,// 星期四
    7. FRIDAY,// 星期五
    8. SATURDAY;// 星期六
    9. public static void main(String[] args) {
    10. /**
    11. * final String name() 方法
    12. */
    13. System.out.println(MONDAY.name()); // SUNDAY
    14. /**
    15. * final int ordinal() 方法
    16. */
    17. System.out.println(MONDAY.ordinal()); // 1
    18. /**
    19. * etDeclaringClass() 方法
    20. */
    21. WeekEnum monday = WeekEnum.MONDAY;
    22. Class clazz = WeekEnum.MONDAY.getDeclaringClass();
    23. System.out.println(clazz); // class WeekEnum
    24. /**
    25. * valueOf(Class<T> enumType, String name) 方法
    26. */
    27. Enum e = WeekEnum.valueOf(clazz,monday.name());
    28. System.out.println(e); //MONDAY
    29. /**
    30. * switch 中使用枚举
    31. */
    32. switch (WeekEnum.SUNDAY){
    33. case SUNDAY:
    34. System.out.println("星期日");
    35. break;
    36. case MONDAY:
    37. System.out.println("星期一");
    38. break;
    39. case TUESDAY:
    40. System.out.println("星期二");
    41. break;
    42. case WEDNESDAY:
    43. System.out.println("星期三");
    44. break;
    45. case THURSDAY:
    46. System.out.println("星期四");
    47. break;
    48. case FRIDAY:
    49. System.out.println("星期五");
    50. break;
    51. case SATURDAY:
    52. System.out.println("星期六");
    53. break;
    54. }
    55. }
    56. }

    5.2 、示例2

            开发使用。

    1. public enum PayTypeEnum {
    2. PAY_WX(1, "微信支付"),
    3. PAY_ALI(2,"支付宝支付");
    4. //枚举类型业务数据值
    5. private int value;
    6. //显示名称
    7. private String displayName;
    8. PayTypeEnum(int value, String displayName) {
    9. this.value = value;
    10. this.displayName = displayName;
    11. }
    12. /**
    13. * 根据value获取到枚举类名称
    14. *
    15. * @param value
    16. * @return
    17. */
    18. public static String getNameByValue(Integer value) {
    19. PayTypeEnum type = getByValue(value);
    20. return null == type ? "" : type.name();
    21. }
    22. /**
    23. * 根据value获取到枚举类显示名称
    24. *
    25. * @param value
    26. * @return
    27. */
    28. public static String getDisplayNameByValue(Integer value) {
    29. PayTypeEnum type = getByValue(value);
    30. return null == type ? "" : type.getDisplayName();
    31. }
    32. /**
    33. * 根据value获取枚举类型
    34. *
    35. * @param value
    36. * @return
    37. */
    38. public static PayTypeEnum getByValue(Integer value) {
    39. if (null != value) {
    40. for (PayTypeEnum type : PayTypeEnum.values()) {
    41. if (type.getValue() == value) {
    42. return type;
    43. }
    44. }
    45. }
    46. return null;
    47. }
    48. /**
    49. * 根据name获取枚举value
    50. *
    51. * @param name
    52. * @return
    53. */
    54. public static int getValueByName(String name) {
    55. if (null != name && !"".equals(name.trim())) {
    56. PayTypeEnum type = PayTypeEnum.valueOf(name);
    57. return null == type ? 0 : type.value;
    58. }
    59. return 0;
    60. }
    61. public int getValue() {
    62. return value;
    63. }
    64. public void setValue(int value) {
    65. this.value = value;
    66. }
    67. public String getDisplayName() {
    68. return displayName;
    69. }
    70. public void setDisplayName(String displayName) {
    71. this.displayName = displayName;
    72. }
    73. }

    5.3 、示例3

            枚举实现接口示例。

    1. /**
    2. * 枚举实现接口
    3. */
    4. public enum ColorEnum implements ColorService{
    5. RED{
    6. @Override
    7. public String getColor() {
    8. return "红色";
    9. }
    10. },
    11. BLUE{
    12. @Override
    13. public String getColor() {
    14. return "蓝色";
    15. }
    16. };
    17. /**
    18. *
    19. * 0 RED 红色
    20. * 1 BLUE 蓝色
    21. */
    22. public static void main(String[] args) {
    23. for (ColorEnum c:ColorEnum.values()) {
    24. System.out.println(c.ordinal()+" "+c.name()+" "+c.getColor());
    25. }
    26. }
    27. }
    28. /**
    29. * 定义一个接口
    30. */
    31. interface ColorService{
    32. public String getColor();
    33. }

  • 相关阅读:
    06 | 基于Docker构建企业Jenkins CI平台
    OA项目之我的审批(查询&会议签字)
    Springboot整合之Shiro和JWT技术实现无感刷新
    git常用操作(二)
    「Python入门」Python多进程
    CPU,ISA架构,CPU位数与内存
    DistributedDataParallel数据不均衡
    http客户端Feign
    “推广+搞笑剧情”,如何碰撞出爆款的火花?
    【从头构筑C#知识体系】1.8 语句
  • 原文地址:https://blog.csdn.net/u012965203/article/details/128133030