下面的写法与直接 使用静态方法而言,可读性、可维护性更强
是不是有DSL的感觉....

当然enum反编译后,的确就是静态方法。

/**
* Created by MyWorld on 2016/8/3.
*/
public enum Operation {
PLUS("+") {
@Override
public int apply(int x, int y) {
return x + y;
}
}, MINUS("-") {
@Override
public int apply(int x, int y) {
return x - y;
}
}, TIMES("*") {
@Override
public int apply(int x, int y) {
return x * y;
}
}, DIVIDE("/") {
@Override
public int apply(int x, int y) {
return x / y;
}
}; private String op; Operation(String op) {
this.op = op;
} public abstract int apply(int x, int y); public String getOp() {
return op;
} public void setOp(String op) {
this.op = op;
} public static void main(String[] args) {
System.out.println(Operation.PLUS.apply(1, 2));
} }

感谢刘光聪在简书上的分享

一个使用enum实现多态的例子的更多相关文章

  1. 这是一个hibernate 联合主键的例子

    package com.bird.entity; import java.io.Serializable; import javax.persistence.Entity; import javax. ...

  2. 【ABAP系列】SAP 一个完整的SAP的Abap例子(idoc,edi文件的相互转换)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 一个完整的SAP的Aba ...

  3. Delphi多线程的OnTerminate属性(附加一个关于临界区线程同步的例子)

    首先看TThread源码中关于OnTerminate的代码: public .... property OnTerminate: TNotifyEvent read FOnTerminate writ ...

  4. 一个简单的Object Hook的例子(win7 32bit)

    Object Hook简单的来说就是Hook对象,这里拿看雪上的一个例子,因为是在win7 32位上的,有些地方做了些修改. _OBJECT_HEADER: kd> dt _OBJECT_HEA ...

  5. j.一个NIO与SSLEngine结合的例子

    对于BIO通道的程序来讲,建立起SSLServerSocket之后,后续的工作就和普通的ServerSocket没有什么区别了,这是因为JDK中通过JSSE的API,封装了SSL通道的实现逻辑,否则, ...

  6. 一个简单的Spring测试的例子

    在做测试的时候我们用到Junit Case,当我们的项目中使用了Sring的时候,我们应该怎么使用spring容器去管理我的测试用例呢?现在我们用一个简单的例子来展示这个过程. 1 首先我们新建一个普 ...

  7. 关于封装的一个小问题和TA的例子

    写个小例子吧 --  很多细节(如校验.判断等等)都略了 其实不是有意写成这样,而是很多朋友都这么写(当然里面也有点夸张的写法) 这么写其实也没什么不好,简单明了,不用动脑子,一看就很直白, 但是如果 ...

  8. 一个关于css3背景透明的例子

    大家都知道使用opacity调节透明度不仅是背景透明了而且选择区域的文字也跟着透明了, 这是我们不想要的效果,于是强大的css3便有了只让背景透明的功能 那就是background:rgba(0,0, ...

  9. 一个java解析xml的简单例子

    java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import ...

随机推荐

  1. ORACLE DUAL表详解 .

    今天在戴明明同学的QQ空间里看到篇不错的关于DUAL表的文章,自己平时也时而会用到,可是没有系统的学习过,借这个机会学习学习~ ==================================== ...

  2. windows 文件watch nodejs

    本篇博客,主要是记录下最近一直纠结的gulp.watch方法,在工作中我们肯定都遇到过,新添加的文件没办法自动触发watch,下面我们就来看有什么办法处理 1.首先我们肯定是先百度一下 百度推荐的是g ...

  3. python运维开发(十四)----HTML基本操作

    内容目录: HTML概述 head标签 body中常用标签 css选择器 css常用属性 HTML HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言) ...

  4. Leetcode 171 Excel Sheet Column Number python

    题目: Given a column title as appear in an Excel sheet, return its corresponding column number. For ex ...

  5. SQL Server 中索引的禁用与删除

    主题 1. 禁用索引 alter index index_name on table_name disable; 主题 2. 删除索引 drop index table_name.index_name ...

  6. API接口测试01理论

    定义 接口测试是系统组件间及多个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 ...

  7. gdal vc++ 配置说明

      1在VC中,打开菜Tool-Option,在Directories页面中的Library files中和Include files中分别添加GDAL的LIB文件目录和INCLUDE文件目录2打开菜 ...

  8. Java与C#间json日期格式互转完美解决方案

    http://blog.csdn.net/wilsonke/article/details/24362851   作用一种简单方便的数据传输方案,JSON已经成为替代XML的事实标准.然而在JSON中 ...

  9. java中内存结构及堆栈详解

    一. java内存结构 1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置 2. MethodArea(方法区域):类的信息及静态变量. 对应是Permanet Generation, ...

  10. 【LeetCode练习题】Longest Valid Parentheses

    Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length ...