网上搜集的信息表示,通过java反射机制,可以控制类自身的属性和方法等。但是我在开发项目中看到一段代码,是要修改一个类的属性值。这个类如下:public class ConfigInDB {
        public static int MinSrcCount = 2;
public static int DBPoolSize = 10;
public static int CdnDBPoolSize = 2;
public static int EditorDBPoolSize = 1;
public static int ToodouDBPoolSize = 1;
}
另一个类有一个方法用到了反射机制去修改ConfigInDB这个类的属性值:private boolean SetValue(List<StringPair> list) {
                Class<ConfigInDB> c = ConfigInDB.class;
Field f;
String s;
int i;
                f = c.getField(pair.key);
s = f.getType().getName();
if (s.compareTo("int") == 0) {
try {
i = Integer.parseInt(pair.value);
} catch (Exception ex) {
log.error("bad value of " + s, ex);
continue;
}
if (f.getInt(c) != i) {
f.setInt(c, i);
}

}我的问题是为什么不直接对这个类型的属性进行赋值,而是弄这么麻烦去用反射机制去修改:private boolean SetValue(List<StringPair> list) {
          ConfigInDB.MinSrcCount = 20;
.....
}
上面不也是修改该了这个类的属性值吗?

解决方案 »

  1.   

    本来就是public static的,感觉没必要用反射
      

  2.   

    反射常用来写框架    可以确保通用性。。不用修改一个东西就去改程序。。你改配置文件pair.key就可以了。
      

  3.   

    恩 ,我明白了,原来我的这些需要修改的值都是存在数据库里,我要动态的去数据库里获取 所以,需要利用java反射机制,一个一个的赋值代码既没有灵活性也缺乏美感。