服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java枚举使用方法详解

Java枚举使用方法详解

2021-01-12 14:25CSDN邓帅 Java教程

这篇文章主要为大家详细介绍了Java枚举的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。

在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.ljq.test;
 
/**
 * 枚举用法详解
 *
 * @author jiqinlin
 *
 */
public class TestEnum {
  /**
   * 普通枚举
   *
   * @author jiqinlin
   *
   */
  public enum ColorEnum {
    red, green, yellow, blue;
  }
 
  /**
   * 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
   *
   * @author jiqinlin
   *
   */
  public enum SeasonEnum {
    //注:枚举写在最前面,否则编译出错
    spring, summer, autumn, winter;
 
    private final static String position = "test";
 
    public static SeasonEnum getSeason() {
      if ("test".equals(position))
        return spring;
      else
        return winter;
    }
  }
 
  /**
   * 性别
   *
   * 实现带有构造器的枚举
   *
   * @author jiqinlin Java学习交流QQ群:589809992 我们一起学Java!
   *
   */
  public enum Gender{
    //通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
    //赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
    MAN("MAN"), WOMEN("WOMEN");
 
    private final String value;
 
    //构造器默认也只能是private, 从而保证构造函数只能在内部使用
    Gender(String value) {
      this.value = value;
    }
 
    public String getValue() {
      return value;
    }
  }
 
  /**
  * 订单状态
  *
  * 实现带有抽象方法的枚举
  *
  * @author jiqinlin
  *
  */
  public enum OrderState {
    /** 已取消 */
    CANCEL {public String getName(){return "已取消";}},
    /** 待审核 */
    WAITCONFIRM {public String getName(){return "待审核";}},
    /** 等待付款 */
    WAITPAYMENT {public String getName(){return "等待付款";}},
    /** 正在配货 */
    ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
    /** 等待发货 */
    WAITDELIVER {public String getName(){return "等待发货";}},
    /** 已发货 */
    DELIVERED {public String getName(){return "已发货";}},
    /** 已收货 */
    RECEIVED {public String getName(){return "已收货";}};
 
    public abstract String getName();
  }
 
  public static void main(String[] args) {
    //枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
    ColorEnum colorEnum = ColorEnum.blue;
    switch (colorEnum) {
    case red:
      System.out.println("color is red");
      break;
    case green:
      System.out.println("color is green");
      break;
    case yellow:
      System.out.println("color is yellow");
      break;
    case blue:
      System.out.println("color is blue");
      break;
    }
 
    //遍历枚举
    System.out.println("遍历ColorEnum枚举中的值");
    for(ColorEnum color : ColorEnum.values()){
      System.out.println(color);
    }
 
    //获取枚举的个数
    System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");
 
    //获取枚举的索引位置,默认从0开始
    System.out.println(ColorEnum.red.ordinal());//0
    System.out.println(ColorEnum.green.ordinal());//1
    System.out.println(ColorEnum.yellow.ordinal());//2
    System.out.println(ColorEnum.blue.ordinal());//3
 
    //枚举默认实现了java.lang.Comparable接口
    System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1
 
    //--------------------------
    System.out.println("===========");
    System.err.println("季节为" + SeasonEnum.getSeason());
 
 
    //--------------
    System.out.println("===========");
    for(Gender gender : Gender.values()){
      System.out.println(gender.value);
    }
 
    //--------------
    System.out.println("===========");
    for(OrderState order : OrderState.values()){
      System.out.println(order.getName());
    }
  }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://geek.csdn.net/news/detail/238251

延伸 · 阅读

精彩推荐