Java字符串与枚举匹配

Java字符串与枚举匹配,java,string-matching,Java,String Matching,我有一个奇怪的问题,当检查两个看起来相同的字符串时,if语句的计算结果不是真的。我有以下方法: public void render(Cell.Context context, TaskSchedule object, SafeHtmlBuilder sb) { String taskName = getValue(object); System.out.println(taskName); if (String.valueOf(ServerTask.RUN_CYME_E

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

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”,enum ServerTask如下所示:

public enum ServerTask {
    .....
    RUN_CYME_EXPORT("Run CYME Export"),
    .....
}
打印字符串和枚举中的字符串的拼写完全相同。我也尝试过这一点,但没有任何效果:

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

您应该比较包含在枚举中的字符串,而不是按值。

您应该比较包含在枚举中的字符串,而不是按值。

查看ServerTask的构造函数,它将为某些字段分配参数值

如果要与该变量的值进行比较,则需要调用相应的getter


String.valueOf(ServerTask.RUN\u CYME\u EXPORT)可能会返回字符串“RUN\u CYME\u EXPORT”

查看ServerTask的构造函数,它会将参数值分配给某个字段

如果要与该变量的值进行比较,则需要调用相应的getter


String.valueOf(ServerTask.RUN\u CYME\u EXPORT)可能返回字符串“RUN\u CYME\u EXPORT”

枚举应该类似于:

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
}

枚举应该类似于:

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
}

String.valueOf(ServerTask.RUN\u CYME\u EXPORT)
返回什么?您的枚举是否实现了
toString()
?如果是的话,展示出来。并显示枚举构造函数。检查taskName是否有空格。您可以与不区分大小写的进行比较,并在.String.valueOf(ServerTask.RUN\u CYME\u EXPORT)返回“RUN\u CYME\u EXPORT”之前进行修剪。枚举未实现toString()@jeremy,因此它们显然不相等。什么是
String.valueOf(ServerTask.RUN\u CYME\u EXPORT)
返回的?枚举是否实现了
toString()
?如果是的话,展示出来。并显示枚举构造函数。检查taskName是否有空格。您可以与不区分大小写的进行比较,并在.String.valueOf(ServerTask.RUN\u CYME\u EXPORT)返回“RUN\u CYME\u EXPORT”和no之前进行修剪。枚举未实现toString()@jeremy,因此它们显然不相等。这取决于枚举中toString()的实现(如果有)。如果toString()返回内部字符串,则OP的代码应该可以工作。这取决于枚举中toString()的实现(如果有)。如果toString()返回内部字符串,则OP的代码应该可以工作。