枚举里如何如何把 String和interface 放在一起,之后如何根据枚举的key取到对应接口,并实现对应接口的方法
时间: 2023-12-10 17:39:07 浏览: 134
可以使用 Java 中的枚举类型实现这个需求,示例如下:
```java
public enum MyEnum {
TYPE_1("type1", new MyInterface() {
@Override
public void method1() {
// 实现接口方法1
}
@Override
public void method2() {
// 实现接口方法2
}
}),
TYPE_2("type2", new MyInterface() {
@Override
public void method1() {
// 实现接口方法1
}
@Override
public void method2() {
// 实现接口方法2
}
});
private String key;
private MyInterface intf;
MyEnum(String key, MyInterface intf) {
this.key = key;
this.intf = intf;
}
public MyInterface getInterface() {
return intf;
}
public static MyEnum fromKey(String key) {
for (MyEnum e : MyEnum.values()) {
if (e.key.equals(key)) {
return e;
}
}
return null;
}
}
public interface MyInterface {
void method1();
void method2();
}
```
在上面的示例中,我们首先定义了一个枚举类型 `MyEnum`,它包含两个枚举值 `TYPE_1` 和 `TYPE_2`,每个枚举值都有一个对应的字符串 key 和一个实现了 `MyInterface` 接口的对象。这里我们使用了匿名内部类来实现接口的方法。
接着,我们在 `MyEnum` 中定义了一个 `getInterface` 方法,用于获取当前枚举值对应的接口对象。
最后,我们还定义了一个静态方法 `fromKey`,用于根据传入的字符串 key 获取对应的枚举值。在这个方法中,我们遍历所有的枚举值,找到 key 相等的枚举值并返回。
这样,我们就可以通过枚举值的 key 获取到对应的接口对象,并调用接口的方法。示例代码如下:
```java
MyEnum e = MyEnum.fromKey("type1");
if (e != null) {
MyInterface intf = e.getInterface();
intf.method1();
intf.method2();
}
```
阅读全文