Java中如何压缩开关结构?

How compress switch structure in Java?

我在 Java 中有一个带 Switch 的条件结构,在很多情况下,要执行的代码非常相似。唯一的区别是变量的名称。 它类似于:

 switch(n){
            case 1:
                tM=getString(R.string.tM1);
                tD=getString(R.string.tD1);
                break;
            case 2:
                tM=getString(R.string.tM2);
                tD=getString(R.string.tD2);
                break;

            ...

            case n:
                tM=getString(R.string.tMn);
                tD=getString(R.string.tDn);
                break;

            ...

            case 20:
                tM=getString(R.string.tM20);
                tD=getString(R.string.tD20);
                break;

            default:
                tM="";
                tD="";
                break;

        }

代码太长,我可能需要添加更多结构相似的案例。

那么,我怎样才能把它写成两行呢?我搜索这样的东西:

tM=getString(R.string.tM<n>);
tD=getString(R.string.tD<n>);

如何做到这一点?有几种可能的形式? 我尝试了几件事,但没有找到解决方案。 非常感谢。

如果n总是指向R.string.tMn和R.string.tDn,你可以使用Java反射。

Field field = R.string.class.getField("tM" + n);
tM = getString((String)field.get(null));

tD 相同

假设 getString() 方法采用 String 作为参数并且 R.string.tMn 是 String。如果不是,只需转换为合适的类型