Java简洁开发技巧,减少繁琐臃肿的代码

Szx • 2020 年 12 月 09 日

消除if...else的方法

在项目实际开发中使用if...else判断的场景非常多,上面只是其中几种场景。下面再列举一下,其他常见的场景。

1.根据不同的数字返回不同的字符串public String getMessage(int code) {

if (code == 1) {

return "成功!";

} else if (code == -1) {

return "失败!";

} else if (code == -2) {

return "网络超时!";

} else if (code == -3) {

return "参数错误!";

}

throw new RuntimeException("code异常!");

}

使用枚举可以轻松替换掉上面那段代码public enum MessageEnum {

SUCCESS(1, "成功!"),

FAIL(-1, "失败!"),

TIME_OUT(-2, "网络超时!"),

PARAM_ERROR(-3, "参数错误!");

private int code;

private String message;

MessageEnum(int code, String message) {

this.code = code;

this.message = message;

}

public int getCode() {

return this.code;

}

public String getMessage() {

return this.message;

}

//jdk1.8的写法

public static MessageEnum getMessageEnum(int code) {

return Arrays.stream(MessageEnum.values()).filter(x -> x.code == code).findFirst().orElse(null);

}

//jdk1.8以下MessageEnum办法的写法

/*

public static MessageEnum getMessageEnum(int code) {

for (MessageEnum messageEnum : MessageEnum.values()) {

if (code == messageEnum.code) {

return messageEnum;

}

}

return null;

}

*/

}

调用方法public String getMessage(int code) {

MessageEnum messageEnum = MessageEnum.getMessageEnum(code);

return messageEnum.getMessage();

}

三目运算符替换简单判断

例如这种简单的if判断方法public String getMessage2(int code) {

if(code == 1) {

return "成功";

}

return "失败";

}

替换为三目运算符public String getMessage2(int code) {

return code == 1 ? "成功" : "失败";

}

判断是否为null

java中自从有了null之后,很多地方都要判断实例是否为null,不然可能会出现NPE的异常。public String getMessage7(int code) {

return code == 1 ? "成功" : "失败";

}

public String getMessage3(int code) {

Test test = null;

return test.getMessage2(1);

}

如果这段代码不判断异常,运行时就会出现java.lang.NullPointerException异常,所以我们平时都要提前判断一下public String getMessage8(int code) {

Test test = null;

if (test != null) {

return test.getMessage2(1);

}

return null;

}

Optional解决空指针问题

Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。

从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。

本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。

可以使用Optional来解决空指针异常问题public String getMessage8(int code) {

Test test = null;

Optional testOptional = Optional.of(test);

return testOptional.isPresent() ? testOptional.get().getMessage2(1) : null;

}

java太臃肿_Java简洁开发技巧,减少繁琐臃肿的代码相关推荐

  1. java 2d 教程_Java 2D开发技巧之“灯光与阴影”

    Java 2D开发技巧之"灯光与阴影" (2016-12-14 02:12:25) 标签: 杂谈 一. 引言 在本文中,我们将向你展示如何为扁平形状添加一种灯光效果以实现一种类3D ...

  2. java web开发技巧_java web开发技巧

    1 java web开发技巧 java学习没有诀窍,也没有捷径.只有脚踏实地学好java知识,把理论知识灵活运用实践,多学,多问,多操作,只要这样才能真正成为java编程高手.下面小编给大家说说jav ...

  3. java web试题_Java web开发经典面试题汇总(内附答案详解)

    原标题:Java web开发经典面试题汇总(内附答案详解) 1.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 答:Web 容器加载Servlet 并将其实例化后,Servl ...

  4. java项目流程_Java项目开发全流程实践

    文章导读 [项目遵循需求分析.程序设计.编码.测试.运行标准开发过程, 从分析项目问题入手,提出解决方案,应用对象建模工具UML设计系统,依据设计文档进行编码.] 问题描述:实现一个简单的四则运算器. ...

  5. java性能瓶颈分析_Java性能优化技巧整理,做一个深度的程序员

    原标题:Java性能优化技巧整理,做一个深度的程序员 在我们身边是一大批的程序员,层次不一,但是放眼观,我们很容易就可以看到那些是业务型程序员,那些是有层次的程序员.注重细节,注重性能,做一个有深度的 ...

  6. java系统教程_Java 教程(开发环境配置+基础语法)

    Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.ora ...

  7. java vector编程_Java编程开发中向量(Vector)及其应用

    要学习Java编程开发中向量及其应用方面的知识就要先了解什么是向量,向量是如何声明及初始化的,下面就让IT培训网专家来给大家详细介绍下如何认识向量及其使用方法吧! 关于向量的介绍: 向量 vector ...

  8. java 记事本 新建_java记事本开发

    今天我想要分享的是一个用java写的一个记事本程序.我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的 ...

  9. web开发的java语言步骤_java web开发入门一(servlet和jsp)基于eclispe

    servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...

最新文章

  1. 为什么你今年的去哪儿产品经理面试挂了?
  2. 微服务Apache ServiceComb 数据一致性Saga演进介绍
  3. Golang GOPATH 包
  4. python导包路径问题_python的导包问题
  5. php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果
  6. ASP.NET中的两个Cookie类:HttpCookie类与Cookie类
  7. ruby 数据类型Symbol
  8. PCD与STL格式及其内涵
  9. Java方法 根据经纬度计算距离
  10. 禁止电信远程控制服务器自动下发修改光猫配置信息
  11. Velodyne Lidar Inc.宣布与禾赛光电科技签订专利许可协议
  12. 使用VMware虚拟机通过Panabit抓取爱快虚拟机PPPoE报文
  13. wifi服务器延迟高,网络延时高(网络延迟高怎么办(家里WIFI延迟高,教你几招搞定网络延迟))...
  14. 安卓 ANR 原因,解决方法
  15. 管理之旅(01)游学阿里
  16. [WSL2]WSL2迁移虚拟磁盘文件ext4.vhdx
  17. Linux运维部落 DNS服务,Linux运维部落
  18. ROS项目开发流程、框架
  19. Webview相关属性和事件处理
  20. SAP CO 成本的分配

热门文章

  1. tags文件生成及使用
  2. 源码分析学习记录(12)——自动UV展开
  3. Java 字符串拆分
  4. 打开虚拟机出现bogon login怎么整?
  5. Reactive响应式流入门
  6. 如何做一个股票自动交易系统的步骤
  7. csp-2022复赛复习模板
  8. MacBook Pro接通电源后电池不充电 Apple官方解决办法
  9. FUS猎云网2019年度医疗健康产业峰会(北京)
  10. java地磅串口显示乱码_解决串口接收中文乱码问题