一个使用enum实现多态的例子

下面的写法与直接 使用静态方法而言,可读性、可维护性更强
是不是有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));
    }

}

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

时间: 2024-10-25 04:02:48

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

jfinal初接触,一个简单的文件上传例子

写了个上传的小例子. 从jfinal官网下载jfinal-1.8_demo_for_jsp.zip 然后下载jfinal-1.8-lib.zip 按要求删掉该删除的,引入一些包,之后的项目结构: DemoConfig.java中配置路由,只留下了根路径: /** * 配置路由 */ public void configRoute(Routes me) { me.add("/", CommonController.class); //me.add("/blog", B

一个简单的 ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript 。

前言 TypeScript 是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发.TypeScript扩展了 JavaScript 的句法,所以任何现有的JavaScript程序可以不加改变的在TypeScript下工作.TypeScript是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性.TypeScript

一个带参数的Shell的例子

#!/bin/bash # Program: # LZSH server log filter # History: # 2014/07/01 Kom First release # 2014/07/03 Kom Remote and multi-param support # Set PATH PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # Set script name

一个关于字符串截取输出的例子

要求:给定字符串"1234"或者"12345",输出以下序列. output-> "1234","123","234","12","23","34","1","2","3","4"  "12345","1234","

一个jeecg整合activiti的学习例子,源码下载

社区成员:刘京华采用技术:jeecg+ activiti源码下载地址:http://pan.baidu.com/s/1dDxOHrV 截图演示:  2.jpg (71.81 KB, 下载次数: 0) 4.jpg (41.98 KB, 下载次数: 0) 5.jpg (64.07 KB, 下载次数: 0) 5.jpg (64.07 KB, 下载次数: 0) 一个jeecg整合activiti的学习例子,源码下载

一个浏览器循环刷新网页的例子

class Program { public static void Main(string[] args) { int i=0; String[] urlarray = new String[] { "http://www.baidu.com/", "http://msdn.microsoft.com/", "http://www.qidian.com/Default.aspx" }; RefreshPage repa = new Refres

一个java解析xml的简单例子

java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 解析XML文件 * * @author sunlightcs

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

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 一个完整的SAP的Abap例子(idoc,edi文件的相互转换) 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 ? *&---------------------------------------------------------------------* *& Report Z_

CSS布局中一个简单的应用BFC的例子

什么是BFC BFC(Block Formatting Context),简单讲,它是提供了一个独立布局的环境,每个BFC都遵守同一套布局规则.例如,在同一个BFC内,盒子会一个挨着一个的排,相邻盒子的间距是由margin决定且垂直方向的margin会重叠.而float和clear float也只对同一个BFC内的元素有效. 什么情况产生BFC W3C标准中这样描述:Floats, absolutely positioned elements, block containers (such as