当前位置: 首页 > 知识库问答 >
问题:

获取整个枚举中的字符串并返回枚举常量

耿学义
2023-03-14

我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举:

enum CursorInfo {
    NORMAL("Walk-to"),
    TAKE("Take"),
    USE("Use"),
    TALK("Talk-to"),
    FISH("Net", "Bait", "Cage", "Harpo");

    String[] toolTip;

    CursorInfo(String... toolTip) {
        this.toolTip = toolTip;
    }
};

现在我想要能够键入类似的内容:

CursorInfo.getCursor("Bait");
private static final Set<CursorInfo> SET = EnumSet.allOf(CursorInfo.class);

    public static Optional<CursorInfo> getCursor(String toolTip) {
        return SET.stream().filter(info -> Arrays.stream(info.toolTip).anyMatch(option -> option.contains(toolTip))).findAny();
    }

共有1个答案

谢夜洛
2023-03-14

希望以下剪辑对您有所帮助。当然,您可以使用Stream API来简化它。但概念要明确。

只需将此添加到枚举声明中即可。

public static CursorInfo getCursor(String search)
{
    for(CursorInfo cursorValue : CursorInfo.values())
    {
        for(String tool : cursorValue.toolTip)
        {
            if (search.equals(tool))
                return cursorValue;
        }
    }

    //proper error handling
    return null;
}
 类似资料:
  • 本文向大家介绍C#枚举到字符串并返回,包括了C#枚举到字符串并返回的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 例如,我如何做类似的事情: 结果示例:

  • 因此,进一步寻找,我发现这个人有一个解决方案:typescript中基于字符串的枚举的解决方案 这将允许像这样的东西工作: 唯一的回应基本上是说这样做是不安全的。(但我应该说,它确实起作用了--我可以键入eventtype.dot...Atom editor给了我5个大小写选项可供选择(保持代码中的内容一致),然后我可以使用它将字符串值吐出来,给我的用户一个很好的填充空间的体验,将来我可以更改枚举