博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java Plasterer] Java Components 3:Java Enum
阅读量:6489 次
发布时间:2019-06-24

本文共 4762 字,大约阅读时间需要 15 分钟。

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.

 

转载地址:http://jqouo.baihongyu.com/

你可能感兴趣的文章
异步编程 101: 是什么、小试Python asyncio
查看>>
10月12日云栖精选夜读:【直击2017杭州·云栖大会】TECH INSIGHT企业迁云实战专场...
查看>>
html中在线预览pdf文件之pdf在线预览插件
查看>>
MongoDB入门篇
查看>>
Java 集合08之 ListLinkedList, ArrayList等使用场景和性能分析
查看>>
短期怎么学会云计算?新手学习云计算的规划
查看>>
支配vue框架之模版语法 v-html
查看>>
英伟达发布超强大新型芯片用于人工智能
查看>>
以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
查看>>
详细精确阐述jsBridge执行流程的文章
查看>>
并发编程导论
查看>>
使用AndroidX + ViewModel + LiveData + DataBinding等组件搭建的MVVM快速开发框架
查看>>
[译] 关于 React Router 4 的一切
查看>>
Python虚拟环境指南2019版
查看>>
[译] 移动界面设计的 10 项启发式原则
查看>>
Git自学成才——Pull Request
查看>>
Python2和Python3 urllib对照表
查看>>
凭什么说这是前端最好的时代?
查看>>
用css实现视差效果
查看>>
我的友情链接
查看>>