public interface Keys()
{
   String NAME = "name";
   String ADDRESS = "address";
}如果我这里是很多常量,并且是不定时添加。
那么如何把这些常量的名字灵活读取到定义在一个list中?

解决方案 »

  1.   

    可以放在MAP里面吧,
    Map map = new HashMap();
    map.put("NAME", "name ");
    map.put("ADDRESS", "address ");
      

  2.   

    首先,
    public   interface   Keys() 
    这个是定义的什么?方法,还是接口?如果要灵活的放到集合中,可以用Map,一个key对应一个value,这样多好。放到List中,怎么能灵活的设置名字呢?
      

  3.   

    不是写死的,  我只要这个Key就行了  就是我这个Keys 中定义多少常量当方法调用时都会自动保存到这个集合中
      

  4.   

    既然是常量,就应该是在代码中需要被使用的,你这么引用起来多麻烦?逐个定义的好处就是你随时可以引用: Constants.NAME 
    如果确实嫌逐个定义很烦的话,可以考虑下使用枚举 enum ?
      

  5.   

    public class Keys{   public final static String   NAME   =   "name";
       ....}Keys.NAME
      

  6.   

    public class Keys{  public static List list =  new ArrayList() ;//值
      public static Map map = new HashMap() ;//键值对
      static {    list.add( "name") ;
          
      }
      static {    map.put("NAME" , "name") ;
          
      }}
      

  7.   

    常量Key真的不适合放在list里,使用会方便吗,如果有key动态变化的需要,那key就不具备常量的特性了,用单例的key仓库可以吧,如果你实在喜欢用静态list,那就用前面说的静态代码块初始化静态list,需要的地方引用和维护,但是,要注意并发的问题。
      

  8.   

    Class clazz = Class.forName("cn.com.Keys");
                Field[] fields = clazz.getDeclaredFields();
                for (Field field : fields)
                {
                    String str = field.toString();
                    int number = str.lastIndexOf(".");
                    String result = str.substring(1+number);
                    System.err.println(result);
                }