我现在有一个常量类,这个类中全是常量,而且很多,我现在想把这些常量全部放到一个list里?怎么做比较方便?我不能一个一个的list.add吧?

解决方案 »

  1.   

    为啥放list里,你要用的时候咋弄?遍历??list还不如map顺便问下,你怎么取出来,如果是写死那么一个一个放list里,还不如不放,直接调用
    如果是反射,那么循环就好
      

  2.   

    用.properties文件定义,然后load到一个Properties类对象。
      

  3.   

    http://stephen830.javaeye.com/blog/256723取出所有定义的属性  
      

  4.   


    不只做和目的,但是感觉是一个“退化”的做法。数据放到一个具体类中,要比放在 List 中方便的多。如果动态的 add ,可以使用“反射”获取该类中的所有属性,然后动态的 add
      

  5.   

    你在这个类中加一个method,把所有常量都放进去不就行了?
      

  6.   

    最简单就是放到一个static的数组里
      

  7.   

    不要用list,用map和反射可以实现。key是你的常量名字,value是你的常量值。 public static Map<String, Object> dumpProperty2Map(Class obj) {
           Map<String, Object> map = new Hashtable<String, Object>();       Field[] field1 = obj.getDeclaredFields();       for (int i = 0; i < field1.length; i++) {           field1[i].setAccessible(true);           try {
                   map.put(field1[i].getName(), field1[i].get(obj));
               } catch (IllegalArgumentException e1) {
                   throw new STBSystemException(e1);
               } catch (IllegalAccessException e2) {
                   throw new STBSystemException(e2);
               }       }       return map;   }
      

  8.   

    import java.lang.reflect.Field;
    import java.lang.reflect.Modifier;
    import java.util.ArrayList;
    public final class Constants {
    public static final String CONST_ONE = "one";
    public static final String CONST_TWO = "two";
    public static final String CONST_THREE = "three";
    public static final String CONST_FOUR = "four";
    public static final String CONST_FIVE = "five";
    public static final String CONST_SIX = "six";
    public static final String CONST_SEVEN = "seven";
    public static final String CONST_EIGHT = "eight";

    public String ab = "test";
    String aa = "";

    public static void main(String[] aa) {
    String className = "Constants";//填写要测试的类   
            try {
    Class c = Class.forName(className);

    Field[] fields = c.getDeclaredFields();   
    ArrayList resultList = new ArrayList();

                for(int i=0;fields!=null && i<fields.length;i++){   
                    // 成员变量描述符
                 String modifier = Modifier.toString(fields[i].getModifiers());
                
                 if (modifier != null && modifier.indexOf("final")> -1) {
                 // 是常量 添加到列表中 
                 // 也可以通过getType() 得到成员变量的类型
                 resultList.add(fields[i].getName());
                 }
                }   
                
                for (int i=0;i<resultList.size();i++) {
                 System.out.println("成员变量名称" + resultList.get(i));
                }



    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }//载入类   
            
    }}
      

  9.   

    得到属性field
    如果是String类型
    field.get(String.class);
    其他类型对应类类型 如int
    field.getInt(int.class);
      

  10.   

    如果是静态字段field.get(null);即可