Java字符串与枚举匹配
我有一个奇怪的问题,当检查两个看起来相同的字符串时,if语句的计算结果不是真的。我有以下方法: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
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的代码应该可以工作。