java - 在 java (Android) 中获取字符串形式的字段值

标签 java android reflection

请参阅下面的代码...

public static final int s1 = R.raw.s_1slow1;
public static final int s2 = R.raw.s_2fast6;
public static final int s3 = R.raw.s_3slow4;

String trackName = "s" + selectedTrack; //selectedTrack is an integer(1-3) 
mPlayer = MediaPlayer.create(getApplicationContext(), 
this.getClass().getField(trackName).getName()); //failed attempt

有没有办法根据字符串获取资源 ID?
例如,我需要“R.raw.s_1slow1”的值。

最佳答案

为什么不使用 map ?

public static final Map<Integer, Integer> m;
static {
    m = new HashMap<Integer, Integer>(3);
    m.put(1, R.raw.s_1slow1);
    m.put(2, R.raw.s_2fast6);
    m.put(3, R.raw.s_3slow4);
}
m.get(selectedTrack);

像这样使用反射是一个非常糟糕的主意。

如果你想通过反射来做到这一点,这就是你可以做的,但我强烈建议不要这样做:

Field field = this.getClass().getField("s1");
int s1val = field.getInt(this);
System.out.println(s1val);

关于java - 在 java (Android) 中获取字符串形式的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311691/

相关文章:

android - LayoutInflater父级

c# - 获取首先实现接口(interface)但没有派生类的所有 c# 类型

C#获取自己的类名

java - 使用 JAVA ZipFile 类解压 Zip 文件

java - 有没有比属性文件更好的选择来存储常量?

java - 如何在运行 Junit 测试用例时创建用户 session

php - 使用数字键的 Reflection::getProperties() 的奇怪行为

java - Java获取数组元素的类型

android - 将 html 链接分享到 facebook、twitter 或电子邮件

android - 在等待加入的线程时显示 ProgressDialog