我试图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
来实现所需的行为。
我将进行内部查找:
例如
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] 删除。
我来说两句