我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了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();
}
希望以下剪辑对您有所帮助。当然,您可以使用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个大小写选项可供选择(保持代码中的内容一致),然后我可以使用它将字符串值吐出来,给我的用户一个很好的填充空间的体验,将来我可以更改枚举