有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一节课

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.

共 (1) 个答案

  1. # 1 楼答案

    让每个枚举实现一个接口

    这包括:

    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";
            }
        }
    }