Java switch case 抛出空指针异常

问题描述 投票:0回答:1

我有一个枚举声明如下 -

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
时,我在这种方法中遇到了
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;
}

无法理解我哪里出错了。任何帮助将不胜感激!

对重构的任何帮助也表示赞赏!

java if-statement nullpointerexception switch-statement
1个回答
0
投票

这是

Optional
的理想用例:

return Optional.ofNullable(status)
  .map(s -> s.getUrl)
  .orElse(null);
© www.soinside.com 2019 - 2024. All rights reserved.