在Groovy中将字符串转换为具有自定义名称的枚举

跳动

我试图String在Groovy中将a转换为枚举,但是我想使用与文字枚举名称不同的名称。

假设我有一些枚举使用如下自定义名称:

enum Breed {
    HUSKY('Husky'),
    LABRADOR('Labrador'),
    POODLE('Poodle')

    private final String name

    Breed(String name) {
        this.name = name
    }

    String toString() {
        name
    }
}

就目前而言,我可以Breed使用以下代码获得:

Breed breed = 'HUSKY' as Breed

但是,我希望能够重写此行为以改为使用name字段,如下所示:

Breed breed = 'Husky' as Breed

我可以在此枚举中实现或重写以首先检查名称字段的方法吗?理想情况下,我想避免必须重写asType方法String来实现所需的行为。

cfrick

我将进行内部查找:

  • 提供查询表
  • 添加一个助手以通过键获取元素

例如

enum Breed {
    HUSKY('Husky'),
    LABRADOR('Labrador'),
    POODLE('Poodle')

    private final String name

    Breed(String name) {
        this.name = name
    }

    public static final LUT = Breed.values().collectEntries{ [it.name, it] }.asImmutable()

    static from(String name) { 
        assert LUT.containsKey(name)
        LUT.get(name) 
    }
}

assert Breed.from("Husky") == Breed.HUSKY

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在WHERE子句中将字符串数组转换为自定义枚举类型

尝试使用 JsonStringEnumConverter 将枚举转换为自定义字符串名称

如何自定义字符串转换为在@RequestBody枚举?

在Go中将自定义类型转换为字符串

如何在Java中将字符串值转换为自定义模型对象?

如何在SQL Server中将自定义字符串转换为日期

在Python中将自定义字符串格式的时间戳列转换为秒

Java将字符串转换为具有自定义格式的java.util.Date对象

在SQL Server中将具有日期名称的Varchar /字符串转换为Date

将元组转换为自定义字符串

将字符串转换为自定义类

将自定义类型转换为字符串

将自定义字符串转换为DateTime

无法从自定义类转换为字符串

node.js将时间戳字符串转换为具有自定义时区的日期并转换为UTC

在Groovy中将字符串集合的类型强制转换为枚举集合

如何在我的数据类模型中将字符串从Retrofit转换为自定义对象?

如何在 RUST 中将枚举变量的名称转换为字符串?

将具有重复基础值的枚举转换为字符串和枚举的字典

在打字稿中将整数值转换为字符串枚举返回未定义

在 TypeScript 中将字符串转换为枚举

在Typescript中将int转换为枚举字符串

在可移植库中将字符串转换为枚举

如何在TypeScript中将字符串转换为枚举?

在C#中将字符串转换为枚举

如何在Typescript中将字符串转换为枚举

C#如何根据字符串内容在具有自定义名称的文件上书写?

如何将枚举名称转换为字符串?

jaxb枚举到字符串自定义映射