我有一个奇怪的问题,当检查两个看似相同的字符串时,if语句的计算结果不为true。我有以下方法:

public void render(Cell.Context context, TaskSchedule object, SafeHtmlBuilder sb) {
    String taskName = getValue(object);
    System.out.println(taskName);
    if (String.valueOf(ServerTask.RUN_CYME_EXPORT).equals(taskName)) {
                taskName = "    " + taskName;
            }
}


taskName将打印出“ Run CYME Export”,枚举ServerTask如下所示:

public enum ServerTask {
    .....
    RUN_CYME_EXPORT("Run CYME Export"),
    .....
}


打印的字符串和枚举中的字符串是完全相同的拼写。我也尝试这样做无济于事:

if(String.valueOf(ServerTask.RUN_CYME_EXPORT).equals(taskName)){
    .....
}

最佳答案

枚举应类似于:

public enum ServerTask {
    RUN_CYME_EXPORT("Run CYME Export");
    private final String value;
    private ServerTask(String aValue) {this.value = aValue;}
    public String value() {return value;}
}


所以从外面看:

if (ServerTask.RUN_CYME_EXPORT.value().equals(taskName)) {
   // whatever
}

关于java - Java字符串与枚举匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30397632/

10-09 19:22