Java 与枚举匹配的字符串
Java string matching with enum
我遇到一个奇怪的问题,当检查两个看似相同的字符串时,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" 并且枚举 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_CYME_EXPORT) 可能 returns 字符串 "RUN_CYME_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
}
我遇到一个奇怪的问题,当检查两个看似相同的字符串时,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" 并且枚举 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_CYME_EXPORT) 可能 returns 字符串 "RUN_CYME_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
}