在运行时获得枚举时,使用枚举类中的方法

  • 本文关键字:枚举 方法 运行时 java enums
  • 更新时间 :
  • 英文 :


我有一个class

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中得到enum类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.

让每个enum实现一个接口。

这个编译:

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

相关内容

  • 没有找到相关文章

最新更新