我正在尝试使用番石榴<div class="abc">
<ul>
<li><a>Test</a></li>
<li class="selected"><a>Test</a></li>
</ul>
</div>
作为枚举,如下所示:
getIfPresent()
然而,当我逐步完成此操作时,尽管字符串完全匹配,但它始终打印出private enum LegalColumns
{
PRODUCERS_CUT("PRODUCER'S CUT", PMCColumnsEnum.NETWORK_CUT_1.getColumnName()),
PROPOSED_LOCKED_CUT("PROPOSED LOCKED CUT", PMCColumnsEnum.NETWORK_CUT_3.getColumnName()),
LOCK("LOCK", PMCColumnsEnum.LOCKED_DELIVERY.getColumnName()),
FINAL_MIX("FINAL MIX", PMCColumnsEnum.MIX_DATE.getColumnName());
private String column;
private String replacementColumn;
LegalColumns(String column, String replacementColumn) {
this.column = column;
this.replacementColumn = replacementColumn;
}
public static LegalColumns getIfPresent(String column) {
System.out.println(Enums.getIfPresent(LegalColumns.class, column.trim().toUpperCase()));
return Enums.getIfPresent(LegalColumns.class, column.toUpperCase()).orNull();
}
}
。据我所知,我完全遵循番石榴规格。我缺少什么想法?
答案 0 :(得分:1)
使用返回给定类型的可选枚举常量 Enum.valueOf(java.lang.Class,java.lang.String)。如果常数 如果不存在,则返回Optional.absent()。一个常见的用例是 用于解析用户输入或回退到默认枚举常量。对于 例如,Enums.getIfPresent(Country.class, countryInput)。或者(Country.DEFAULT);
返回指定枚举类型的枚举常量 指定的名称。该名称必须与用于的标识符完全匹配 声明此类型的枚举常量。 (无关的空白 不允许使用字符。)
来自您的评论
我已经采用了另一种方法,但对于其他方法,我通过了“FINAL MIX”这样的列。
“FINAL MIX”!=“FINAL_MIX”
Guava使用枚举标识符,而不是您传递给构造函数的字符串。
因此,对于枚举实例,FINAL_MIX("FINAL MIX", PMCColumnsEnum.MIX_DATE.getColumnName());
枚举标识符为“FINAL_MIX”,而不是您在“FINAL MIX”中传递的字符串
另外!由于您没有在string.toUpperCase上定义区域设置,因此存在turkey I bug的风险。