我有一堂这样的课。
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条件作为什么
答案 0 :(得分:2)
由于您不提供任何上下文,因此您可以基于一些假设来做一些事情。
假设一:
如果值初始化为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
还有一些其他方法也浮现在我的脑海,但是在没有更多上下文的情况下,它们在这一点上没有用。
答案 1 :(得分:0)
答案 2 :(得分:0)
您至少可以使用Optional
降低“详细程度”。
String name;
if (stu.getName() != null) {
name = stu.getName();
} else {
name = "default"
}
将成为
String name = Optional.ofNullable(stu.getName()).orElse("default");
您可以选择直接从POJO Optional
返回Student
,以获得可能为null
的任何值。
这将提供更清洁的解决方案:
String name = stu.getName().orElse("default");
如果getName
看起来像:
public Optional<String> getName(){
return Optional.ofNullable(name);
}