如何一下拿到一个类中所有常量?

huosidun0302 2010-06-28 05:12:42
我现在有一个常量类,这个类中全是常量,而且很多,我现在想把这些常量全部放到一个list里?怎么做比较方便?我不能一个一个的list.add吧?
...全文
1215 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
potahai 2010-06-29
  • 打赏
  • 举报
回复
反射循环添加吧
xcehn 2010-06-29
  • 打赏
  • 举报
回复
最简单就是放到一个static的数组里
jiang521725 2010-06-29
  • 打赏
  • 举报
回复
顶楼上
zidasine 2010-06-29
  • 打赏
  • 举报
回复
如果是静态字段

field.get(null);即可
zidasine 2010-06-29
  • 打赏
  • 举报
回复
得到属性field
如果是String类型
field.get(String.class);
其他类型对应类类型 如int
field.getInt(int.class);
huosidun0302 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jichunweistar 的回复:]
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……
[/Quote]
你是把成员变量名称拿出来了,但是常量的值怎么拿啊?
jichunweistar 2010-06-29
  • 打赏
  • 举报
回复
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();
}//载入类

}

}
amasstimber 2010-06-29
  • 打赏
  • 举报
回复
同求!!!!!!!!!!!
Mars_Ma_OK 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 valen_jia 的回复:]
为啥放list里,你要用的时候咋弄?遍历??

list还不如map

顺便问下,你怎么取出来,如果是写死那么一个一个放list里,还不如不放,直接调用
如果是反射,那么循环就好
[/Quote]

赞同..
ouyangxiaokang6 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 huosidun0302 的回复:]
我现在有一个常量类,这个类中全是常量,而且很多,我现在想把这些常量全部放到一个list里?怎么做比较方便?我不能一个一个的list.add吧?
[/Quote]
不要用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;

}

xiao032xiao032 2010-06-28
  • 打赏
  • 举报
回复
学习下
zhanlang9075 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 laorer 的回复:]
http://stephen830.javaeye.com/blog/256723

取出所有定义的属性
[/Quote]
学习了,谢谢。
zhixiulee 2010-06-28
  • 打赏
  • 举报
回复
使用map会比较吧。
xqyky 2010-06-28
  • 打赏
  • 举报
回复
你在这个类中加一个method,把所有常量都放进去不就行了?
24K純帥 2010-06-28
  • 打赏
  • 举报
回复
反射吧
wakeUpDoNottLazy 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 huosidun0302 的回复:]
我现在有一个常量类,这个类中全是常量,而且很多,我现在想把这些常量全部放到一个list里?怎么做比较方便?我不能一个一个的list.add吧?
[/Quote]

不只做和目的,但是感觉是一个“退化”的做法。数据放到一个具体类中,要比放在 List 中方便的多。

[Quote=引用楼主 huosidun0302 的回复:]
我不能一个一个的list.add吧
[/Quote]
如果动态的 add ,可以使用“反射”获取该类中的所有属性,然后动态的 add
laorer 2010-06-28
  • 打赏
  • 举报
回复
http://stephen830.javaeye.com/blog/256723

取出所有定义的属性
focusforce 2010-06-28
  • 打赏
  • 举报
回复
用.properties文件定义,然后load到一个Properties类对象。
valen_jia 2010-06-28
  • 打赏
  • 举报
回复
为啥放list里,你要用的时候咋弄?遍历??

list还不如map

顺便问下,你怎么取出来,如果是写死那么一个一个放list里,还不如不放,直接调用
如果是反射,那么循环就好
猿敲月下码 2010-06-28
  • 打赏
  • 举报
回复
试试反射

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧