一个类有很多静态变量:如下:public static final class string {
 public static final int add_text_hint=0x7f06002e;
        public static final int add_text_rCN=0x7f06002d;
        public static final int app_text_nl=0x7f060002;
        public static final int app_text_rTW=0x7f060001;
        public static final int app_text_us=0x7f060012;
        public static final int app_text_uk=0x7f060011;
}
我有现在想实现如下功能:public int getDeclaredFiled(String raw,String language){}调用方法如下:int a =getDeclaredFiled("add_text","_rCN");
int b =getDeclaredFiled("add_text","_nl");
int c =getDeclaredFiled("add_text","_rTW");
int d =getDeclaredFiled("add_text","_uk");
谢谢各位了!

解决方案 »

  1.   

    我现在有用思路.
    Class clazz=Class.forName(classname);
    Field field=clazz.getDeclaredFiled(fieldname)
    int value=field.getInt(fieldname);
    不知道以上代码是不是行得通。
      

  2.   

    import java.lang.reflect.Field;public final class YourClass {
    public static final int add_text_hint=0x7f06002e;
        public static final int add_text_rCN=0x7f06002d;
        public static final int app_text_nl=0x7f060002;
        public static final int app_text_rTW=0x7f060001;
        public static final int app_text_us=0x7f060012;
        public static final int app_text_uk=0x7f060011;

        
        public static Integer getDeclaredFiled(String raw,String language) throws IllegalArgumentException, IllegalAccessException{
         Field fs[] = YourClass.class.getDeclaredFields();
         String name = raw+language;
         for(Field f:fs){
         if (f.getName().equals(name))
         return (Integer) f.get(null);
         }    
         return null;
        }
        
        public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException{
         System.out.print(YourClass.getDeclaredFiled("app_text","_rTW"));
        }
    }