Java 番石榴getIfPresent()返回值不正确

Java 番石榴getIfPresent()返回值不正确,java,enums,guava,Java,Enums,Guava,我试图使用番石榴的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("

我试图使用番石榴的
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();
    }
}
但是,当我逐步执行此操作时,它总是打印出
Optional.缺席()
,尽管字符串完全匹配。据我所知,我完全遵循番石榴的规格。你知道我遗漏了什么吗?

返回给定类型的可选枚举常量,使用 valueOf(java.lang.Class,java.lang.String)。如果常数 不存在,返回可选的.缺席()。一个常见的用例是 用于解析用户输入或返回默认枚举常量。对于 例如,Enums.getIfPresent(Country.class, countryInput)或(Country.DEFAULT)

返回具有 指定的名称。该名称必须与用于 在此类型中声明枚举常量。(无关空格) 不允许使用字符。)

根据你的评论


我采用了另一种方法,但对于其他人,我通过了类似“最终混合”的专栏

“最终混音”!=“最终组合”

Guava使用枚举标识符,而不是传递给构造函数的字符串

因此,对于枚举实例,
FINAL_MIX(“FINAL MIX”,PMCColumnsEnum.MIX_DATE.getColumnName())枚举标识符是“FINAL_MIX”,而不是在“FINAL MIX”中传递的字符串


另外!!由于您并没有在string.toUpperCase上定义区域设置,所以您有可能会传递。

什么
值?我采用了另一种方法,但对于其他方法,我传递了类似“最终混合”的列。