1. package xcc.mapTest;
  2.  
  3. /**
  4. * @Decription: 接口
  5. * @Author:
  6. * @Date:
  7. * @Email:
  8. **/
  9. public interface Function {
  10.  
  11. /**
  12. * 要做的事情
  13. */
  14. void invoke();
  15. }
  1. package xcc.mapTest;
  2.  
  3. import java.util.Map;
  4.  
  5. /**
  6. * @Decription: 代替'if else' 和 'switch'的方法
  7. * @Author:
  8. * @Date:
  9. * @Email:
  10. **/
  11. public class IfFunction<K> {
  12.  
  13. private Map<K, Function> map;
  14.  
  15. /**
  16. * 通过map类型来保存对应的条件key和方法
  17. *
  18. * @param map a map
  19. */
  20. public IfFunction(Map<K, Function> map) {
  21. this.map = map;
  22. }
  23.  
  24. /**
  25. * 添加条件
  26. *
  27. * @param key 需要验证的条件(key)
  28. * @param function 要执行的方法
  29. * @return this.
  30. */
  31. public IfFunction<K> add(K key, Function function) {
  32. this.map.put(key, function);
  33. return this;
  34. }
  35.  
  36. /**
  37. * 确定key是否存在,如果存在,则执行相应的方法。
  38. *
  39. * @param key the key need to verify
  40. */
  41. public void doIf(K key) {
  42. if (this.map.containsKey(key)) {
  43. map.get(key).invoke();
  44. }
  45. }
  46.  
  47. /**
  48. * 确定key是否存在,如果存在,则执行相应的方法。
  49. * 否则将执行默认方法
  50. *
  51. * @param key 需要验证的条件(key)
  52. * @param defaultFunction 要执行的方法
  53. */
  54. public void doIfWithDefault(K key, Function defaultFunction) {
  55. if (this.map.containsKey(key)) {
  56. map.get(key).invoke();
  57. } else {
  58. defaultFunction.invoke();
  59. }
  60. }
  61.  
  62. }
  1. package xcc.mapTest;
  2.  
  3. import java.util.HashMap;
  4.  
  5. public class Test3 {
  6. public static void main(String[] args) {
  7. IfFunction<String> ifFunction = new IfFunction<>(new HashMap<>(5));
  8.  
  9. //定义好要判断的条件和对应执行的方法
  10. ifFunction.add("1", () -> System.out.println("苹果"))
  11. .add("2", () -> System.out.println("西瓜"))
  12. .add("3", () -> System.out.println("橙子"));
  13.  
  14. //要进入的条件
  15. ifFunction.doIf("2");
  16. }
  17. }

Java代替if和switch的方法(记录一下)的更多相关文章

  1. java中的数学函数Math方法记录

    1,三角函数与属性Math.sin() -- 返回数字的正弦值Math.cos() -- 返回数字的余弦值Math.tan() -- 返回数字的正切值Math.asin() -- 返回数字的反正弦值M ...

  2. Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用

    ylbtech-Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用 1.返回顶部 1. Java 实例 - enum 和 switch 语句 ...

  3. Java给各个方法记录执行时间

    Java给各个方法记录执行时间 long startTime = System.currentTimeMillis();...//要测试时间的方法LoggerFactory.getLogger(Bas ...

  4. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  5. Java开发WebService的几种方法--转载

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...

  6. Java获取随机数的几种方法

    Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...

  7. 《java从入门到精通》学习记录

    目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...

  8. 关于java中的hashcode和equals方法原理

    关于java中的hashcode和equals方法原理 1.介绍 java编程思想和很多资料都会对自定义javabean要求必须重写hashcode和equals方法,但并没有清晰给出为何重写此两个方 ...

  9. Json学习总结(1)——Java和JavaScript中使用Json方法大全

    摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语 ...

随机推荐

  1. HTTP request smuggling CL.TE

    CL.TE 简介 前端通过Content-Length处理请求,通过反向代理或者负载均衡将请求转发到后端,后端Transfer-Encoding优先级较高,以TE处理请求造成安全问题. 检测 发送如下 ...

  2. vue学习(九) 使用内联样式设置style样式

    /html <div id="app"> //对象就是无序键值对的集合 <h1 :style="{ color:red, 'font-weight':2 ...

  3. springboot(五)使用FastJson返回Json视图

    FastJson简介: fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件.它是目前json解析最快的开源组件没有之一!在这之前jaskJs ...

  4. [转]十分钟带你理解Kubernetes核心概念

    本文将会简单介绍 Kubernetes的核心概念.因为这些定义可以在Kubernetes的文档中找到,所以文章也会避免用大段的枯燥的文字介绍.相反,我们会使用一些图表(其中一些是动画)和示例来解释这些 ...

  5. 5.pandas新增数据列

    有的时候,表格自带的数据根本没有办法满足我们,我们经常会新加一列数据或者对原有的数据进行修改 还是接着上篇文章的数据进行操作 直接赋值 我想算一下每一天的温差 df.loc[:, 'wencha'] ...

  6. 关于RecyclerView(二)设置EmptyView

    首先重写一个RecyclerView类 package com.onepilltest.others; import android.content.Context; import android.s ...

  7. 2-Numpy之hstack、vstack、concatenate区别

    concatenate与hstack.vstack的异同点: 都表示拼接数组,concatenate可以实现hstack和vstack的功能,只需要通过调整参数axis的值即可. 其中:v表示垂直(V ...

  8. PHP mysqli_real_escape_string() 函数

    转义字符串中的特殊字符: <?php 高佣联盟 www.cgewang.com // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect ...

  9. CSP-J 2019游记

    准备篇 11.16早上,在南校集合后,大巴车开往日照. 在车上颓了一上午 中午到达日照,考场在山东外国语技术大学(SWUV) 到了大学里的餐厅潦草的吃完饭后去学术报告厅继续颓废 一到山外突然想起了暑假 ...

  10. Spring 自动装配机制

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...