当前位置:网站首页>再见if-else
再见if-else
2022-07-23 05:39:00 【孙俊辰】
再见if-else
前言:
想必大家都被大量if-else所困扰,如图
这样子看起来头都疼,,下面是我的解决方法
if-else的代码就不展示了,大家都知道,直接上最终代码
枚举类
public enum PlayEnum {
NULL("") {
@Override
public String play() {
return null;
}
},
PHONE("PHONE") {
@Override
public String play() {
return "phone";
}
},
COMPUTER("COMPUTER") {
@Override
public String play() {
return "computer";
}
};
PlayEnum(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public PlayEnum getName(String name) {
for (PlayEnum playEnum : PlayEnum.values()) {
if (name.equals(playEnum.getName())) {
return playEnum;
}
}
return PlayEnum.NULL;
}
public abstract String play();
}
public class Test {
public static void main(String[] args) {
//玩手机还是电脑?
String [] names = new String[]{
"PHONE","COMPUTER"} ;
for (String name : names) {
System.out.println(PlayEnum.NULL.getName(name).play());
}
}
}
输出结果
更新:
我发现了问题,是在枚举类中依然有if判断语句,如果判断数量过多,还是会有效率问题,于是我想到了解决方案
将所需要的枚举,存进map中,直接用map进行获取即可
import java.util.HashMap;
import java.util.Map;
public enum PlayEnum {
NULL("") {
@Override
public String play() {
return null;
}
},
PHONE("PHONE") {
@Override
public String play() {
return "phone";
}
},
COMPUTER("COMPUTER") {
@Override
public String play() {
return "computer";
}
};
PlayEnum(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public static final Map<String,PlayEnum> playMap = new HashMap<>();
static {
playMap.put("NULL",NULL);
playMap.put("PHONE",PHONE);
playMap.put("COMPUTER",COMPUTER);
}
public PlayEnum getName(String name) {
return playMap.get(name) == null ? PlayEnum.NULL :playMap.get(name);
}
public abstract String play();
}
核心想法就是
1. 在枚举类中创建一个抽象方法,如 play() 并使每个枚举都实现这个方法
2. 创建一个方法 如 getName(String name) 将参数与所有枚举进行比较
3. 最后根据参数名进行对应的方法
最后:
上述案例供参考,具体业务还是要根据自己需求来写
边栏推荐
- 第一篇博客
- Oracle创建数据库“监听程序未启动或数据库服务未注册”错误处理
- Web server failed to start. Port 8080 was already in use.
- Partial usage of C #
- [Python flask note 5] Blueprint simple à utiliser
- transform: translate(-50%, -50%)边框问题
- The super simple face recognition API can realize face recognition in just a few lines of code
- [untitled]
- C语言之二分查找法或折半查找法剖析(经典例题,经典解析)
- 【无标题】
猜你喜欢

WebSocket长连接

PyGame realizes the airplane war game

Pytorch white from zero uses North pointing
![[metric]使用Prometheus监控flink1.13org.apache.flink.metrics](/img/9a/f6ef8de9943ec8e716388ae6620600.png)
[metric]使用Prometheus监控flink1.13org.apache.flink.metrics

Spark common interview questions sorting

机器学习零散笔记:一些概念和注意

cuda10.0配置pytorch1.7.0+monai0.9.0

RPC与thrift入门

Pyspark learning notes

Copy a project /project in idea
随机推荐
项目流程总结
A usage exploration of entitymanagerfactory and entitymanager
【无标题】
【无标题】
JS call, apply, bind
Pywinauto+某应用程序(学习至第9讲)--受阻
Install enterprise pycharm and Anaconda
[pytho-flask筆記5]藍圖簡單使用
Flask blueprint
TypeScript 常用类型
plsql创建Oracle数据库报错:使用Database Control配置数据库时,要求在当前Oracle主目录中配置监听程序 必须运行Netca以配置监听程序,然后才能继续。或者
Analysis of flask source code (I) request entry
Five methods to prevent over fitting of neural network
通用视图,序列化器
p5面试题
[Python flask note 5] Blueprint simple à utiliser
Hyperlink de underlined code
【无标题】
Redis数据库和项目框架
Project process summary