Java简洁开发技巧,减少繁琐臃肿的代码
消除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<Test> testOptional = Optional.of(test);
return testOptional.isPresent() ? testOptional.get().getMessage2(1) : null;
}
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »