如何在java中简化此代码段?

时间:2015-02-10 07:40:11

标签: java android

我有一段丑陋的代码片段:

if (name.equals("video"))
    getString(R.string.video);
else if (name.equals("music"))
    getString(R.string.music)
else if (name.equals("picture"))
    getString(R.string.picture);
else if (name.equals("text"))
    getString(R.string.text);
else if (name.equals("apk"))
    getString(R.string.apk);

是否可以简化为getString(R.string.#{ name })

3 个答案:

答案 0 :(得分:4)

您可以按名称获取标识符:

int id = getResources().getIdentifier(name, "string", getPackageName());
String str = getResources().getString(id);

<击> 唯一的问题:

else if (name.equals("text"))
    getString(R.string.picture);

您可以在获取标识符之前进行if语句检查。

答案 1 :(得分:3)

您可以创建一个类似于

Map<String, String>填充
Map<String, String> MAP = new HashMap<String, String>();
MAP.put("video", R.string.video);
MAP.put("music", R.string.music);
// ...and so on

if (MAP.containsKey(name)) {
    getString(MAP.get(name));
}

答案 2 :(得分:1)

您可以使用反射api,类似这样的

Field f = R.string.getClass().getDeclaredField("text");
getString(f.get(String.class));