一个使用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-02 22:49:50

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

在线等一个System.net.Maile发送邮件的例子

问题描述 在线等一个System.net.Maile发送邮件的例子 在线等一个System.net.Maile发送邮件的例子,谢谢了

一个oracle+PHP的查询的例子_php基础

 http://qdlover.yeah.net   一个oracle+PHP的查询的例子   本来我不用php了,可是还是有很多朋友问我,我就做了一个例子,具体函数请查手册   其实oracle的函数和别的也差不多,只不过它这里多了一个定义输出变量的过程,   如果学过pl/sql的人都知道的(不过听说只有清华和西安交大用它做网站).   就是OCIDefineByName($id,"ROWNUM",&$rownum);对应了查询中的rownum,一个对应一个,   而且最应

将Siri作为一个未来“不符合网络”竞争的例子

Google正与苹果.互联网企业打仗,这些企业指责Google修改搜索结果.Google执行董事长施密特(Eric Schmidt)成了企业的和事佬."首席解释官".施密特是Google前CEO,也是现任执行董事长.上周,他与华盛顿政客会面,想游说他们放弃反垄断调查.9月,施密特到访韩国,发布新的平板,并与三星高管会谈.施密特现年57岁,最近,他接受了<华尔街日报>的采访,实录如下:问:目前反垄断法的威胁有多大?答:我不知道.我们一直在与欧洲.FTC沟通.他们是时候达成一个

一个div里面图片垂直居中的例子

源码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

C语言多态实现例子

这些设计模式都是基于抽象类的.使用抽象对象是这里的一个核心. 其实我觉得框架化编程的一个核心问题是抽象,用抽象的对象构建程序的主体框架,这是面向对象编程的普遍思想.用抽象构建骨架,再加上多态就形成了一个完整的程序.由于C++语言本身实现了继承和多态,使用这样的编程理念(理念啥意思?跟个风,嘿嘿)在C++中是十分普遍的现象,可以说Virtual(多态)是VC的灵魂. 但是,使用C语言的我们都快把这个多态忘光光了.我常听见前辈说,类?多态?我们用的是C,把这些忘了吧.很不幸的是,我是一个固执的人.这

用正则表达式判断一个简单的用户登陆的例子

正则 bd.jsp <%@ page contentType="text/html;charset=gb2312"%> <% //接受表单提交的字符串, /* 数据只能为a-z,A-Z,0-9的字符的正则表达式的例子. 正则表达式在做程序登陆的过程非常重要.不然用´ or ´ 等语句就可以很容易绕过您的程度判断: 作者:高颂 QQ:932246 一个简单的例子但是很有用,希望起到抛砖引玉的作用. */ String temp ="我是非法的字符";

一个简单的XML Schema的例子

xml 我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的.另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好

一个区分Bean的作用域的例子,即的scope属性

以前很不明白Bean的scope属性的含义,今天做了一个实验,终于差不多搞明白了.贴出来与大家共享.例子很简单,Bean的功能为取当前时间,其代码为:Common.java:--------------------package XX; import java.util.Date;import java.text.*; public class Common{    Date d=new Date();    public String now(String s)    {        Sim

一个广告轮播系统的例子(内含文件上传的方法)

网路广告,变成了 Internet 上的热门学问.而 468x60 更变成了广告人员绞尽脑汁的尺寸. 在处理广告时,若能直接使用浏览器将广告的 468x60 图档送到处理广告的伺服器中,相信是件很舒服的事,不用再开 FTP 程式,搞大半天只为了 upload. 这个问题,是所有 Web CGI 程式的痛,包括 ASP.Prel....等等,都需要再经过系统元件的增加才能达成.号称最强的 Web CGI 程式: PHP,在这方面的表现没有令人失望,甚至傲视其它的 CGI 工具. File Uplo