我有一个枚举声明如下 -
public enum Status {
REQ ("URL1"),
NOT ("URL2"),
GET ("URL3");
String getURL;
Status(String getURL) {
this.getURL = getURL;
}
}
我班上的一个领域:
private Status status;
我有一个函数可以根据枚举类型检索 URL,如下所示 -
public String viewURL() {
switch (status) {
case REQ:
return REQ.getURL;
case NOT:
return NOT.getURL;
case GET:
return GET.getURL;
}
return null;
}
我遇到了一个NullPointerException
在这个方法中,当status
is null
.
然而,当我使用 if 语句实现相同的功能时,它工作得很好 -
public String viewURL() {
if (status == REQ) {
return REQ.getURL;
}
if (status == NOT) {
return NOT.getURL;
}
if (status == GET) {
return GET.getURL;
}
return null;
}
无法理解我哪里出错了。任何帮助将非常感激!
任何有关重构的帮助也将不胜感激!
这是一个理想的用例Optional https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Optional.html:
public String viewURL() {
return Optional.ofNullable(status)
.map(s -> s.getUrl) // only executes if previous step returns non-null
.orElse(null); // executes if any step returns null
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)