我遇到一个奇怪的问题,当检查两个看似相同的字符串时,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)){
.....
}
答案 0 :(得分:4)
枚举应该是这样的:
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
}
答案 1 :(得分:2)
您应该比较包含在枚举中的字符串,而不是比较值。
答案 2 :(得分:0)
查看ServerTask的构造函数,它将把参数值赋给某个字段。
如果要与该变量的值进行比较,则需要调用相应的getter。
String.valueOf(ServerTask.RUN_CYME_EXPORT)可能返回字符串" RUN_CYME_EXPORT"