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.

[Java Plasterer] Java Components 3:Java Enum相关推荐

  1. Java 9 - 17 特性解读:​Java 13

    Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一.所以我们跳过Java 13直接来看Java 14吧. Switch表达式 我觉得switch表达式在日 ...

  2. java进出栈_JVM函数调用:Java出入栈

    JVM函数调用:Java出入栈 JVM函数调用:Java出入栈 目录 局部变量表 索引复用 垃圾回收 栈数据区 栈上分配 线程作为系统运算调度的最小单位,在JVM中线程的行为体现就是函数调用,函数调用 ...

  3. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  4. java架构师之路:JAVA程序员必看的15本书的电子版下载地址

    java架构师之路:JAVA程序员必看的15本书的电子版下载地址 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一 ...

  5. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  6. Java基础知识第二讲:Java开发手册/JVM/集合框架/异常体系/Java反射/语法知识/Java IO

    Java基础知识第二讲(Java编程规范/JVM/集合框架/异常体系/Java反射/语法知识/Java IO/码出高效) 分享在java学习及工作中,常使用的一些基础知识,本文从JVM出发,讲解了JV ...

  7. java 泛型 .net_Java基础11:Java泛型详解

    本文对java的泛型的概念和使用做了详尽的介绍. 本文参考https://blog.csdn.net/s10461/article/details/53941091 具体代码在我的GitHub中可以找 ...

  8. Java 9 - 17 特性解读:Java 10

    在上一篇我们对Java 9的特性进行了一些回顾,今天接着来看看Java 10带来了什么特性.之所以需要把Java 8 到Java 17的特性归纳一遍,因为Java社区对Java 17的重视程度前所未有 ...

  9. java 委托_动态代理:Java开发必学

    一句话概括:java 动态代理通过反射机制,可在不修改原代码的情况下添加新的功能,应用于多种场景,简单.实用.灵活,是 java 开发必学知识,本文将对动态代理使用进行详细介绍. 1. 引言 最近开发 ...

最新文章

  1. 支付宝接口使用文档说明 支付宝异步通知
  2. Java程序员从笨鸟到菜鸟之(七十五)细谈struts2(十四)struts2+ajax实现异步验证...
  3. c语言结构体位定义,C语言结构体位域
  4. JNI学习积累之一 ---- 常用函数大全
  5. Windows环境下smarty安装简明教程
  6. oracle的空闲等待事件,Oracle 常见的33个等待事件详解
  7. 用mycat做读写分离:基于 MySQL主从复制
  8. 朋友借我10万并把房产证交给我,写了借条,并在借条上写明了用此房产做抵押,有效吗?
  9. [备查]SPQuery 返回所有的项目(查询不生效)的问题
  10. 转 基于.NET平台的分层架构实战
  11. fft 估计载波频率程序_调幅信号载波频率的高精度估计方法及装置与流程
  12. matlab自适应高斯滤波,[matlab] 自适应高斯滤波器在二维图像上的应用
  13. 基于java web的实验室设备管理系统的设计与实现
  14. CSS学习笔记--文本格式化
  15. 什么样的广告形式收益高?App商业化变现广告位设计的4大原则及5类广告位优化思路
  16. 将圆滑软件中的数据改写为用grapher画多测道图
  17. 电脑经常自动关机的系统解决方案
  18. python学习-调用邮件接口发送邮件
  19. CCNP路由实验之五 动态路由协议之 OSPF
  20. PTA出现EOFError

热门文章

  1. SQL注入原理深度解析
  2. 关于JDBC的一些笔记
  3. 机器学习中的凸优化理论
  4. (一)git简介及安装
  5. 华为上机考试题系列(二):HJ107求解立方根
  6. rpm(centos)软件包管理工具
  7. bash脚本编程之一 变量、变量类型等
  8. Linux-重装系统之nginx+php+mysql
  9. 写了一阵子多线程之后需要注意的几点
  10. Appium移动自动化配置-ios安卓