Java - 9 个小技巧让你的 if else 看起来更优雅(三)

简介: Java - 9 个小技巧让你的 if else 看起来更优雅(三)

6、使用 Optional

从 JDK 1.8 开始引入 Optional 类,在 JDK 9 时对 Optional 类进行了改进,增加了 ifPresentOrElse() 方法,我们可以借助它,来消除 if else 的判断,使用如下。优化前代码:


String str = "java";
if (str == null) {
    System.out.println("Null");
} else {
    System.out.println(str);
}

优化后代码:

Optional<String> opt = Optional.of("java");
opt.ifPresentOrElse(v -> 
  System.out.println(v), () -> System.out.println("Null"));
  • 小贴士:注意运行版本,必须是 JDK 9+ 才行。

 

7、梳理优化判断逻辑

和第 4 点比较类似,我们可以通过分析 if else 的逻辑判断语义,写出更加易懂的代码,例如以下这个嵌套判断的优化。优化前代码:


// 年龄大于 18
if (age > 18) {
    // 工资大于 5000
    if (salary > 5000) {
        // 是否漂亮
        if (pretty == true) {
            return true;
        }
    }
}
return false;

优化后代码:

if (age < 18) {
    return false;
}
if (salary < 5000) {
    return false;
}
return pretty; 

我们需要尽量把表达式中的包含关系改为平行关系,这样代码可读性更高,逻辑更清晰。

8、使用多态

继承、封装和多态是 OOP(面向对象编程)的重要思想,本文我们使用多态的思想,提供一种去除 if else 方法。优化前代码:


Integer typeId = 0;
String type = "Name";
if ("Name".equals(type)) {
    typeId = 1;
} else if ("Age".equals(type)) {
    typeId = 2;
} else if ("Address".equals(type)) {
    typeId = 3;
}

使用多态,我们先定义一个接口,在接口中声明一个公共返回 typeId 的方法,在添加三个子类分别实现这三个子类,实现代码如下:


public interface IType {
    public Integer getType();
}
public class Name implements IType {
    @Override
    public Integer getType() {
        return 1;
    }
}
public class Age implements IType {
    @Override
    public Integer getType() {
        return 2;
    }
}
public class Address implements IType {
    @Override
    public Integer getType() {
        return 3;
    }
}
  • 注意:为了简便我们这里把类和接口放到了一个代码块中,在实际开发中应该分别创建一个接口和三个类分别存储。

此时,我们之前的 if else 判断就可以改为如下代码:    

IType itype = (IType) Class.forName("com.example." + type).newInstance();
Integer typeId = itype.getType();

有人可能会说,这样反而让代码更加复杂了,此可谓“杀鸡焉用宰牛刀”的典型范例了。这里作者只是提供一种实现思路和提供了一些简易版的代码,以供开发者在实际开发中,多一种思路和选择,具体用不用需要根据实际情况来定了。灵活变通,举一反三,才是开发的上乘心法。

目录
相关文章
|
6月前
|
Java
Java中的条件语句:if语句和switch语句的作用与区别
Java中的条件语句:if语句和switch语句的作用与区别
139 0
|
6月前
|
Java
Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。 顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的
44 1
|
8月前
|
Java
java if
Java if语句是一种用于根据某个条件执行不同操作的控制结构。它会在执行前检查一个条件,如果条件为真,则执行if语句中的代码块,否则跳过if语句中的代码块。
30 0
|
5月前
|
Java
idea小技巧——java版本一直变动
idea小技巧——java版本一直变动
35 1
|
6月前
|
存储 算法 Java
百度搜索:蓝易云【如何Java中的大量的if else判断?】
以上是一些常用的优化技术,可以帮助简化代码并提高可维护性。根据具体的需求和情况,选择合适的优化方法来减少大量的if-else判断。
44 0
|
6月前
|
缓存 Java Maven
Java初学者必看,idea小技巧汇总-2
Java初学者必看,idea小技巧汇总
49 0
|
6月前
|
Java Maven
Java初学者必看,idea小技巧汇总-1
Java初学者必看,idea小技巧汇总
60 0
|
8月前
|
Java
java if
if (condition) { // 如果条件为真,执行这里的代码 } else { // 如果条件为假,执行这里的代码 }
34 0
|
8月前
|
Java C语言
JAVA布尔型_if 语句使用要点
JAVA布尔型_if 语句使用要点
61 0
|
9月前
|
设计模式 算法 Java
Java中如何使用策略模式减少 if / else 分支的使用
Java中如何使用策略模式减少 if / else 分支的使用
69 0