消除ifelse
在项目实际开发中使用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;
}
public static MessageEnum getMessageEnum(int code) {
return Arrays.stream(MessageEnum.values()).filter(x -> x.code == code).findFirst().orElse(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 ? "成功" : "失败";
}
Optional解决空指针问题
Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Optional 的意义显然不止于此。
从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。
本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。
可以使用Optional来解决空指针异常问题
public String getMessage8(int code) {
Test test = null;
Optional<Test> testOptional = Optional.of(test);
return testOptional.isPresent() ? testOptional.get().getMessage2(1) : null;
}