不只做和目的,但是感觉是一个“退化”的做法。数据放到一个具体类中,要比放在 List 中方便的多。如果动态的 add ,可以使用“反射”获取该类中的所有属性,然后动态的 add
你在这个类中加一个method,把所有常量都放进去不就行了?
最简单就是放到一个static的数组里
不要用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; }
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();
如果是反射,那么循环就好
不只做和目的,但是感觉是一个“退化”的做法。数据放到一个具体类中,要比放在 List 中方便的多。如果动态的 add ,可以使用“反射”获取该类中的所有属性,然后动态的 add
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; }
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();
}//载入类
}}
如果是String类型
field.get(String.class);
其他类型对应类类型 如int
field.getInt(int.class);