[英]How to avoid many if-else statements
我有一个这样的班..
Class A {
public void someNullCheckingMethod(Student stu) {
if (stu.getName() != null) {
String name = stu.getName();
} else {
// get name from other source(its something like
// fallback)
}
if (stu.getId() != null) {
String id = stu.getId();
} else {
// get id from other source(its something like
// fallback)
}
if (stu.getAddress() != null) {
String address = stu.getAddress();
} else {
// get address from other source(its something like
// fallback)
}
if (stu.getCity() != null) {
String city = stu.getCity();
} else {
// get city from other source(its something like
// fallback)
}
if (stu.getGender() != null) {
String gender = stu.getGender();
} else {
// get gender from other source(its something like
// fallback))
}
}
}
有没有办法避免太多的if语句? 如您在这里看到的,我正在检查每个属性的空条件,但是我不希望很多检查都获得期望的结果,只是想减少条件是否满足以及希望获得相同的期望结果,无论我将所有这些if条件作为什么。
由于您不提供任何上下文,因此您可以基于一些假设来做一些事情。
假设一:
如果值初始化为null
String name;
// or
String name = null;
然后,您可以只分配值,而忽略字段是否为空,因为类成员已经为空。
String name = stu.getName(); // String name = "Some Name" OR null, depending on return value of method
假设二:
如果只想避免if语句,则可以使用三元运算符
String name = stu.getName() != null ? stu.getName() : null; // Or some other default value
我还想到了其他一些方法,但是如果没有更多上下文,它们在这一点上是没有用的。
您至少可以使用Optional
降低“详细程度”。
String name;
if (stu.getName() != null) {
name = stu.getName();
} else {
name = "default"
}
会成为
String name = Optional.ofNullable(stu.getName()).orElse("default");
您可以选择从POJO Student
直接返回Optional
的任何可能为null
。
这将提供更清洁的解决方案:
String name = stu.getName().orElse("default");
如果getName
看起来像:
public Optional<String> getName(){
return Optional.ofNullable(name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.