在 groovy 或 java 中搜索枚举条目
Searching enum entries in groovy or java
我在 groovy 中创建了以下枚举:
enum Status {
FAILED(0, "Failed"),
SUCCESSFUL(1, "Successful")
private final int key
private final String val
public Status(int key, String val) {
this.val = val
this.key = key
}
String toString() { return val }
}
我想编写一个函数来搜索我的枚举 class 中 returns 为 Status.contains("Failed")
的条目。可以这样做吗?
你可以自己写必要的方法
下面是 java 中的示例:
enum Status {
FAILED(0, "Failed"),
SUCCESSFUL(1, "Successful");
private final int key;
private final String val;
Status(int key, String val) {
this.val = val;
this.key = key;
}
public static Status containsName(String name) {
for (Status status : Status.values()) {
if (status.name().equalsIgnoreCase(name)) {
return status;
}
}
return null;
}
public static Status containsVal(String val) {
for (Status status : Status.values()) {
if (status.val.equalsIgnoreCase(val)) {
return status;
}
}
return null;
}
public String toString() { return val; }
}
方法 containsName
returns 一个 Status 实例,如果它的名字等于一个参数。方法 containsValue
returns 一个 Status 实例,如果它的值等于一个参数。
Status failed = Status.containsName("FAILED");
Status successful = Status.containsVal("Successful");
在 Groovy 中,您可以这样做:
enum Status {
FAILED(0, 'Failed'),
SUCCESSFUL(1, 'Successful')
private final int key
private final String val
public Status(int key, String val) {
this.val = val
this.key = key
}
String toString() { val }
static boolean containsVal(String val) {
Status.values()*.val.contains val
}
}
assert Status.containsVal('Failed')
我在 groovy 中创建了以下枚举:
enum Status {
FAILED(0, "Failed"),
SUCCESSFUL(1, "Successful")
private final int key
private final String val
public Status(int key, String val) {
this.val = val
this.key = key
}
String toString() { return val }
}
我想编写一个函数来搜索我的枚举 class 中 returns 为 Status.contains("Failed")
的条目。可以这样做吗?
你可以自己写必要的方法
下面是 java 中的示例:
enum Status {
FAILED(0, "Failed"),
SUCCESSFUL(1, "Successful");
private final int key;
private final String val;
Status(int key, String val) {
this.val = val;
this.key = key;
}
public static Status containsName(String name) {
for (Status status : Status.values()) {
if (status.name().equalsIgnoreCase(name)) {
return status;
}
}
return null;
}
public static Status containsVal(String val) {
for (Status status : Status.values()) {
if (status.val.equalsIgnoreCase(val)) {
return status;
}
}
return null;
}
public String toString() { return val; }
}
方法 containsName
returns 一个 Status 实例,如果它的名字等于一个参数。方法 containsValue
returns 一个 Status 实例,如果它的值等于一个参数。
Status failed = Status.containsName("FAILED");
Status successful = Status.containsVal("Successful");
在 Groovy 中,您可以这样做:
enum Status {
FAILED(0, 'Failed'),
SUCCESSFUL(1, 'Successful')
private final int key
private final String val
public Status(int key, String val) {
this.val = val
this.key = key
}
String toString() { val }
static boolean containsVal(String val) {
Status.values()*.val.contains val
}
}
assert Status.containsVal('Failed')