[Java Plasterer] Java Components 3:Java Enum

简介:

Written In The Font

  When we to set some constants for projects, we always use ‘public static final’to set Int or String constants.Or sometimes,we can also set the paramters in properties.When the project starts,we can get the properties to use them.Today,we can use Enum (JDK 1.5).

Three pieces:
  1. An Example to Know Enum

  2. How to use EnumSet and EnumMap

  3. Enum Analysis

An Example to Know Enum

  Firstly,we use the Enum to implements Operation.

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
package org.nsg.jdk.testEnum;
 
/**
  * @Description  OperationTest.java
  *
  * @author BYSocket
  * @date 2015-1-8 6:05:59PM
  * @version 1.0
  */
public class OperationTest
{
     public static void main(String[] args)
     {
         double x = 2.0,y=4.0;
         for (Operation op : Operation.values())
             System.out.printf("%f %s %f = %f%n", x,op,y,op.apply(x, y));
     }
}
 
enum Operation
{
     PLUS("+")
     {
         double apply(double x,double y){return x + y;}
     },
     MINUS("-")
     {
         double apply(double x,double y){return x - y;}
     },
     TIMES("*")
     {
         double apply(double x,double y){return x * y;}
     },
     DIVIDE("/")
     {
         double apply(double x,double y){return x / y;}
     };
     
     private final String symbol;
     Operation(String symbol){this.symbol = symbol;}
     
     @Override
     public String toString(){return symbol;}
     
     abstract double apply(double x,double y);
}

  Run as Java application,we can see the Console.The result shows operations

1
2
3
4
2.000000 + 4.000000 = 6.000000
2.000000 - 4.000000 = -2.000000
2.000000 * 4.000000 = 8.000000
2.000000 / 4.000000 = 0.500000

Q:‘The enum is just like class?’ 

A:Yep,I think that Enum is a nice type.So let us know some methods by apis:

1. Firstly,we can make an abstract method ‘apply()’ ,then set in the constant-specific class body. Its called constant-specific method implementation.

2. We can make constructor with fields to make the enum has vales.(Like String or int …)

3. toString() method : Returns the name of this enum constant, as contained in the declaration. This method may be overridden, though it typically isn’t necessary or desirable. An enum type should override this method when a more programmer-friendly string form exists.

4. ‘vales()’ method :to get all enum objects. And ‘getValue()’ can get the enum object’ value.

 

Note ‘Its easy to learn how to use.Then learn more and study in depth.’ And in real projects,We can use enums to replace Int or String Enum Pattern.And Enum is also a typesafe enum.

How to use EnumSet and EnumMap

  Let us see another example to learn some Sets of Enum.So lets see it:

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
package org.nsg.jdk.testEnum;
 
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Map.Entry;
 
/**
  * @Description  WeekTest.java
  *
  * @author BYSocket
  * @date 2015-1-9 2:55:10PM
  * @version 1.0
  */
public class WeekTest
{
     public static void main(String[] args)
     {
         EnumSet< Week > weekSet = EnumSet.allOf(Week.class);
         System.out.println("EnumSet:");
         for (Week w : weekSet)
             System.out.println(w);
         
         EnumMap< Week , String> weekMap = new EnumMap< Week , String>(Week.class);
         weekMap.put(Week.MON, "星期一");
         weekMap.put(Week.TUE, "星期二");
         weekMap.put(Week.WED, "星期三");
         
         System.out.println("EnumMap:");
         for (Iterator< Entry <Week, String>> iterator = weekMap.entrySet().iterator(); iterator.hasNext();)
         {
             Entry< Week , String> weekEntry = iterator.next();
             System.out.println(weekEntry.getKey().name()+":"+weekEntry.getValue());
         }
     }
}
 
enum Week
{
     MON("1"), TUE("2"), WED("3"), THU("4"), FRI("5"), SAT("6"),SUN("7");
 
     private final String symbol;
     Week(String symbol){this.symbol = symbol;}
     
     @Override
     public String toString(){return symbol;}
}

We can see in Console:

1
2
3
4
5
6
7
8
9
10
11
12
13
< font size = "4" face = "宋体" >EnumSet:
1
2
3
4
5
6
7
EnumMap:
MON:星期一
TUE:星期二
WED:星期三
</ font >

Note: EnumSet or EnumMap is easy for we to use.And with them,we can use enums easily.

Enum Analysis

  We use ‘javap -c -private xxx’to know the class:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
final class org.nsg.jdk.testEnum.Week extends java.lang.Enum< org.nsg.jdk.testEnu
m.Week> {
   public static final org.nsg.jdk.testEnum.Week MON;
 
   public static final org.nsg.jdk.testEnum.Week TUE;
 
   public static final org.nsg.jdk.testEnum.Week WED;
 
   public static final org.nsg.jdk.testEnum.Week THU;
 
   public static final org.nsg.jdk.testEnum.Week FRI;
 
   public static final org.nsg.jdk.testEnum.Week SAT;
 
   public static final org.nsg.jdk.testEnum.Week SUN;
 
   private final java.lang.String symbol;
 
   private static final org.nsg.jdk.testEnum.Week[] $VALUES;
 
   public static org.nsg.jdk.testEnum.Week[] values();

  We can see ‘Enum is a class.just is a class.’but no extends.

 

相关文章
|
8月前
|
安全 Java 程序员
Java语言枚举(Enum)的深入探索
Java语言枚举(Enum)的深入探索
106 0
|
4月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
299 1
|
6月前
|
Java
Java里的enum类型可以用这swich里吗
Java里的enum类型可以用这swich里吗
40 9
|
8月前
|
Java 索引
Java 枚举(enum)
5月更文挑战第7天
|
8月前
|
Java 索引
Java开发指南 | 第三十篇】Java 枚举(enum)
Java开发指南 | 第三十篇】Java 枚举(enum)
48 1
|
8月前
|
Java
java的Enum 使用以及转换
java的Enum 使用以及转换
41 0
|
8月前
|
安全 Java 编译器
Java枚举(enum)
Java枚举(enum)
59 0
|
8月前
|
IDE Java 开发工具
你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
104 0
|
Java
Java枚举(Enum)的使用
Java枚举(Enum)的使用
87 0
|
前端开发 Java C++
用上Java的Enum枚举 玩一玩课堂点到
用上Java的Enum枚举 玩一玩课堂点到
108 1