代码样式如下:

switch(code) {

case 1:

//调用方法

method1();

break;

case 2:

//调用方法

method2();

break;

case 3:

//调用方法

method3();

break;

case 4:

//调用方法

method4();

break;

case 5:

//调用方法

method5();

break;

case 6:

//调用方法

method6();

break;

case 7:

//调用方法

method7();

break;

case 8:

//调用方法

method8();

break;

case 9:

//调用方法

method9();

break;

case 10:

//调用方法

method10();

break;

case 11:

//调用方法

method11();

break;

case 12:

//调用方法

method12();

break;

case 13:

//调用方法

method13();

break;

case 14:

//调用方法

method14();

break;

case 15:

//调用方法

method15();

break;

case 16:

//调用方法

method16();

break;

case 17:

//调用方法

method17();

break;

default:

//调用方法

methodDefalut();

break;

}

这段switch代码已经是很整洁了,但由于条件太多,switch语句就变得很长了!而且这样写不符合开闭原则,每增加一个条件,就又要修改这段代码!可读性也会随着长度增长而变差!

所以,我想请教各位大佬,如何写一个优雅的代码来替换上面这段代码?

我有已经想到两种方法:

(1)使用容器,每个方法都换成一个类,但这样的话,就要多加 17个类!(如果能解决类的数量过多问题,就好了)

(2)使用反射,但是反射的速度太慢了,这段代码是放在一个接口里面的,性能太差会影响接口吞吐速率!

我们可以看到上面两种方法都有一些缺点,所以我想请教各位,有没有什么更好的方法?谢谢!

java if switch 效率_Java中 switch-case 如何优化?相关推荐

  1. java for foreach 效率_Java中LinkedList的fori和foreach效率比较

    在<Java中ArrayList的fori和foreach效率比较>中对ArrayList的两种循环方式进行了比较,本次对LinkedList的两种遍历方式进行效率的比较. 1. list ...

  2. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  3. java switch语句套循环_java中switch语句和循环语句的使用

    java中switch语句和循环语句的使用 发布时间:2020-06-17 10:49:18 来源:亿速云 阅读:121 作者:Leah 这篇文章运用简单易懂的例子给大家介绍java中switch语句 ...

  4. java中switch的使用_Java中Switch用法示例

    1.switch使用示例 从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象.String s = "a"; switch (s) { case ...

  5. java中switch用法举例范围_Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样), 在java1.7后 ...

  6. Java yield详解_Java 中的 yield 关键字

    从 Java 14 开始,yield 关键字已添加到 Java 语言中,用于实现 switch 表达式. 它用于从 switch 表达式中的 case 返回值. 例如: int x = switch ...

  7. java enum 长度限制_Java中的Enum的使用与分析

    示例: public enum EnumTest { FRANK("The given name of me"), LIU("The family name of me& ...

  8. java 异常处理发生异常_Java中的异常处理

    java 异常处理发生异常 Exception Handling in Java is a very interesting topic. Exception is an error event th ...

  9. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

最新文章

  1. PAT 1052. Linked List Sorting
  2. 解决incorrect 'only available in ES6' warning (W119) with options `moz: true, esversion: 6` 报错问题...
  3. 九九乘法表编程上三角python_java语言打印上三角和下三角,进一步得到九九乘法表...
  4. 使用Spring跟踪应用程序异常
  5. http请求502_从知乎页面的502说一说测试人员应该知道的HTTP协议状态码!
  6. opencv双目视觉标定、匹配和测量 (附代码)(转载)
  7. SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解...
  8. 《R数据可视化手册》——2.5 绘制箱线图
  9. [软件更新]暴风影音2009最新特别版光盘免费赠送(暴风门特别版)
  10. Java eclipse汉字乱码解决
  11. 前端必备Javascript 书籍测评【含红宝书和绿皮书】
  12. [可道云文件管理kodbox 1.15] 企业网盘+云端文档管理+批量上传下载文件夹+移动端H5优化
  13. c语言有向网络介数,SNA社交网络算法
  14. 《圈子圈套3》读后感
  15. Json数据的对比工具,对比库(含js在线对比工具,.net 的jsondiffer包)
  16. vue鼠标悬停更改图片
  17. Snagit_日文输入法:促音,长音,小写的输入方法
  18. Java实现内网穿透
  19. Webstorm干货(开发效率快到飞起!!!)
  20. Unity 程序员推荐书目

热门文章

  1. 如何安装旧版本的 R 包
  2. Science:纽约西奈山医学院房刚组定量分析真核生物DNA 6mA解析细菌污染的影响...
  3. 单细胞转录组专题研讨会第二期
  4. matlab cam orbit,如何在MATLAB中平滑旋转3D绘图?
  5. R语言dplyr包的top_n函数返回dataframe或tibble的前N行数据、dplyr包的top_frac函数返回dataframe或tibble的前百分之N(N%)的数据
  6. python使用fpdf生成pdf文件:配置多种语言字体写入多种文字
  7. sklearn基于make_scorer函数为Logistic模型构建自定义损失函数+代码实战(二元交叉熵损失 binary cross-entropy loss)
  8. 基于Kmeans聚类算法的图像分割(色彩分割)实战
  9. R构建加权最小二乘回归模型(Weighted Least Squares Regression)
  10. 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?