簡體   English   中英

java.lang.IllegalArgumentException:沒有枚舉常量

[英]java.lang.IllegalArgumentException: No enum constant

我的枚舉有問題。

這里是 :

public enum DataEnum {
    NAME_PEOPLE("NAME_PEOPLE"),
    FIRSTNAME_PEOPLE("FIRSTNAME_PEOPLE"),
    ID("ID"),
    PASS("PASS"),
    NEW_MAIL("NEW_MAIL");

    private  String name;
    private DataEnum(String s) {
        name = s;
    }
    public String getValue() {
        return name;
    }
    public void setValue(String s) {
        this.name = s;
    }
}

我在那里使用它:

public String transform(String textToTransform, People people){
        Pattern TAG_REGEX = Pattern.compile("#(.+?)#");
        Matcher matcher = TAG_REGEX.matcher(textToTransform);
        while (matcher.find()) {
            String s = matcher.group(1);
            switch (s) {
                case "FIRSTNAME_PEOPLE":
                    DataEnum.valueOf(s).setValue(people.getFirstName());
                    break;
                case "NAME_PEOPLE":
                    DataEnum.valueOf(s).setValue(people.getName());
                    break;
                case "ID":
                    DataEnum.valueOf(s).setValue(people.getEmail());
                    break;
                case "PASS":
                    DataEnum.valueOf(s).setValue(people.getPassword());
                    break;
                default:
                    break;
            }
            textToTransform = textToTransform.replace("#" + DataEnum.valueOf(s) + "#", DataEnum.valueOf(s).getValue());
        }
        return textToTransform;
    }

我得到以下錯誤:

引起原因:java.lang.IllegalArgumentException:沒有枚舉常量fr.pdf.utils.DataEnum.FIRSTNAME_PEOPLE

編輯:

引起原因:java.lang.IllegalArgumentException:沒有枚舉常量fr.pdf.utils.DataEnum.FIRSTNAME_PEOPLE at java.lang.Enum.valueOf(Enum.java:238)at fr.pdf.utils.DataEnum.valueOf(DataEnum.java :3),網址為fr.pdf.services.impl.MailServiceImpl.transform(MailServiceImpl.java:160),網址為fr.pdf.services.impl.MailServiceImpl.sendMail(MailServiceImpl.java:84),網址為fr.pdf.dao.impl。 People.update(People.java:372)

第160行對應於:

textToTransform = textToTransform.replace("#" + DataEnum.valueOf(s) + "#", DataEnum.valueOf(s).getValue());

刪除枚舉,並執行此操作:)

public String transform(String textToTransform, People people){
    Pattern TAG_REGEX = Pattern.compile("#(.+?)#");
    Matcher matcher = TAG_REGEX.matcher(textToTransform);
    while (matcher.find()) {
        String s = matcher.group(1);
        String replaceWith = null;
        switch (s) {
            case "FIRSTNAME_PEOPLE":
                replaceWith = people.getFirstName();
                break;
            case "NAME_PEOPLE":
                replaceWith = people.getName();
                break;
            case "ID":
                replaceWith = people.getEmail();
                break;
            case "PASS":
                replaceWith = people.getPassword();
                break;
            default:
                break;
        }
        textToTransform = textToTransform.replace("#" + s + "#", replaceWith);
    }
    return textToTransform;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM