Enum的使用

在项目开发中经常会使用到枚举,下面将举个例子,展示枚举的使用,不说废话,直接上代码。

 1 package com.tom.enumTest;
 2 
 3 public enum StatusType {
 4    A("FOOD","1"), B("CAR","2"), C("HOME","3");
 5    private String label;
 6    private String value;
 7 /**
 8  * @return the label
 9  */
10 public String getLabel() {
11     return label;
12 }
13 /**
14  * @param label the label to set
15  */
16 public void setLabel(String label) {
17     this.label = label;
18 }
19 /**
20  * @return the value
21  */
22 public String getValue() {
23     return value;
24 }
25 /**
26  * @param value the value to set
27  */
28 public void setValue(String value) {
29     this.value = value;
30 }
31 private StatusType(String label, String value) {
32     this.label = label;
33     this.value = value;
34 }
35   public StatusType getStatusTypeByValue(String val) {
36         for (StatusType statusType : StatusType.values()) {
37             if (statusType.getValue().equals(val)) {
38                 return statusType;
39             }
40         }
41       return null;
42   }
43   
44 }
View Code
 1 package com.tom.enumTest;
 2 
 3 import java.lang.reflect.Method;
 4 import java.util.ArrayList;
 5 import java.util.Arrays;
 6 import java.util.List;
 7 
 8 public class TestForEnum {
 9     private static final String GET_LABEL_METHOD = "getLabel";
10     public static <T extends Enum<T>> T translateByCode(final Class<T> clazz, final String code) {
11         if(code != null){
12             try {
13                 final Method m = clazz.getDeclaredMethod(GET_LABEL_METHOD);
14                 for (T t : inspectConstants(clazz)) {
15                     if (code.equals(m.invoke(t))) {
16                         return t;
17                     }
18                 }
19             } catch (Exception e) {            
20                 throw new RuntimeException(e);
21             }
22         }
23         return null;
24     }
25     public static <T extends Enum<T>> List<T> inspectConstants(final Class<T> clazz) {
26         return new ArrayList<T>(Arrays.asList(clazz.getEnumConstants()));
27     }
28     public static void main(String[] args) {
29         StatusType statusType = translateByCode(StatusType.class, "FOOD");
30         System.out.println(statusType.getLabel()+","+statusType.getValue());
31     }
32 }
View Code

 

public enum NumberEnum {
ONE("1","哈哈"),
TWO("2","嘿嘿"),
THREE("3","呵呵");
private String key;
private String value;
NumberEnum(String key,String value) {
this.key = key;
this.value = value;
}

public String getKey() {
return key;
}

public String getValue() {
return value;
}
public static NumberEnum getByKey(String key){
NumberEnum[] numEnum = NumberEnum.values();
for(NumberEnum dEnum : numEnum){
if(redEnum.getValue() == key){
return dEnum;
}
}
return null;
}
@Test
public void getIt4() {
Map<String,Object> map = new HashMap<String, Object>();
NumberEnum[] numEnum = NumberEnum.values();
if ( null != numEnum && numEnum.length >=0) {
for (NumberEnum nEnum : numEnum) {
map.put(nEnum.getKey(),nEnum.getValue());
      }
}
System.out.println(map.size());
}

转载于:https://www.cnblogs.com/tom-plus/p/5274617.html

### 定义和使用枚举类型(enum) 在C/C++中,`enum` 是一种用户自定义的数据类型,它由一组命名的整数值构成。这种数据类型的主要目的是提高代码的可读性和维护性,使开发者可以更加直观地表示某些固定范围内的值。 #### 1. **定义枚举类型** 可以通过 `enum` 关键字来定义一个枚举类型。下面是一个简单的例子: ```cpp #include <iostream> using namespace std; // 定义枚举类型 enum Color { RED, GREEN, BLUE }; ``` 在这个例子中,`Color` 被定义为一个枚举类型,其中包含了三个枚举子:`RED`, `GREEN`, 和 `BLUE`。默认情况下,这些枚举子会被赋予连续的整数值,起始值为0[^1]。 #### 2. **显式设置枚举子的值** 如果需要,还可以给枚举子指定特定的整数值: ```cpp enum Number { ONE = 1, TWO = 2, THREE = 3 }; ``` 这里,`ONE`, `TWO`, 和 `THREE` 分别被赋予了值1, 2, 和3[^3]。 #### 3. **使用枚举类型** 一旦定义好枚举类型之后,就可以像其他基本数据类型一样使用它。例如,可以声明变量、比较值等: ```cpp int main() { // 声明一个枚举类型的变量 Color myFavoriteColor = GREEN; // 使用if语句进行判断 if (myFavoriteColor == GREEN) { cout << "My favorite color is green." << endl; } // 输出枚举子对应的整数值 cout << "The value of RED is: " << RED << endl; cout << "The value of GREEN is: " << GREEN << endl; cout << "The value of BLUE is: " << BLUE << endl; return 0; } ``` 这段代码展示了如何声明一个枚举类型的变量,并对其进行比较操作以及打印其对应的实际整数值[^3]。 #### 4. **高级特性——强类型枚举(C++11及以上版本)** 从C++11开始,引入了强类型枚举的概念,这有助于避免不同枚举类型之间的隐式转换问题。强类型枚举通过关键字 `enum class` 或者 `enum struct` 来定义: ```cpp // 强类型枚举 enum class Direction { NORTH, SOUTH, EAST, WEST }; int main() { Direction dir = Direction::NORTH; // 需要显式转换才能获取底层整数值 cout << static_cast<int>(dir) << endl; return 0; } ``` 在这里,`Direction` 是一个强类型枚举,因此不能直接与其他类型的值进行比较或运算,除非显式地转换为其基础类型[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值