一个解决多国语言的问题

安卓机器人 2012-07-13 03:16:35
一个类有很多静态变量:如下:

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");


谢谢各位了!
...全文
96 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yktd26 2012-07-13
  • 打赏
  • 举报
回复
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"));
}
}
为啥呢 2012-07-13
  • 打赏
  • 举报
回复
这类常量应该用枚举管理起来,枚举里面又可以直接写个静态方法获取你想要的东西
gufengwyx1 2012-07-13
  • 打赏
  • 举报
回复
为何不将这些放入MAP里
安卓机器人 2012-07-13
  • 打赏
  • 举报
回复
我现在有用思路.


Class clazz=Class.forName(classname);
Field field=clazz.getDeclaredFiled(fieldname)
int value=field.getInt(fieldname);


不知道以上代码是不是行得通。

62,614

社区成员

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

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