如何使用字符串值作为变量名简化Java代码?
简化动态数组访问的解决方案
嘿,我完全懂你想摆脱一堆switch分支的心情——这种重复代码确实很烦人!在Java里直接用字符串变量名去访问数组是行不通的,因为它是静态类型语言,不支持这种动态的变量名引用。不过我们可以用Map来实现你想要的简洁效果,而且扩展性更好。
具体实现步骤:
定义一个Map来存储变量名与数组的映射
在你的Activity中添加一个Map成员变量,用来关联字符串形式的变量名和对应的二维数组:private Map<String, String[][]> exerciseDataMap = new HashMap<>();初始化Map,存入你的数组
在Activity的初始化方法(比如onCreate)里,把所有需要访问的数组放入Map中:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_activity_layout); // 初始化你的数组 String[][] Example001 = {{"String1","String2"},{"Light","Normal","Heavy"}}; String[][] Example999 = {{"SampleA","SampleB"},{"Weak","Strong","Extreme"}}; // 示例数组 // 将数组与对应的变量名绑定存入Map exerciseDataMap.put("Example001", Example001); exerciseDataMap.put("Example999", Example999); }简化getExerciseValue方法
现在你可以直接通过Map获取对应数组,再访问指定索引的值,完全不需要switch分支:public String getExerciseValue(String variableName, int codeOrValue, int type) { // 从Map中取出目标数组 String[][] targetArray = exerciseDataMap.get(variableName); // 做安全检查:数组存在且索引合法,避免空指针和数组越界异常 if (targetArray != null && codeOrValue >= 0 && codeOrValue < targetArray.length && type >= 0 && type < targetArray[codeOrValue].length) { return targetArray[codeOrValue][type]; } // 数组不存在或索引不合法时返回默认值 return "default"; }
为什么这样做更好?
- 简洁性:不用再写冗长的switch case,新增数组只需要往Map里
put一条记录即可 - 健壮性:添加了索引合法性检查,避免运行时出现
NullPointerException或ArrayIndexOutOfBoundsException - 可维护性:所有数组的映射关系集中管理,后续修改或扩展更方便
内容的提问来源于stack exchange,提问作者Kristian
相关产品推荐
相关产品推荐

