gpt4 book ai didi

java - 当在运行时获取枚举时,使用枚举类中的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:49 25 4
gpt4 key购买 nike

我有课

public class AT{
public Map getMap(){
Map<String,Class> map = new HashMap<>();
map.put("name",AT.A.class);
map.put("name",AT.B.class);
return map;
}

public enum A {;
a,b,c,d;
public static String getTableName() {
return "table_nameA" ;
}
}
public enum B {;
e,f,g,h;
public static String getTableName() {
return "table_nameB" ;
}
}
}

我将从用户那里获取一个字符串 s,可用于从 map 获取枚举类 A

主类->

AT at = new AT();
Map<String,Class > map = new HashMap<>(at.getMap());
System.out.println(map.get(s).getEnumConstants()[0]); //will give a;

但是我无法访问函数getTableName

System.out.println( map.get(s).getTableName() ); //want to use this but doesn't work.

最佳答案

让每个枚举实现一个接口(interface)。

编译:

import java.util.*;
interface TableName {
String get();
}
class AT {
public Map<String,Class> getMap() {
Map<String,Class> map=new HashMap<>();
map.put("name",AT.A.class);
map.put("name",AT.B.class);
return map;
}
public enum A implements TableName {
a,b,c,d;
public String get() {
return "table_nameA";
}
}
public enum B implements TableName {
e,f,g,h;
public String get() {
return "table_nameB";
}
}
}

关于java - 当在运行时获取枚举时,使用枚举类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com