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
。如果不是,只需转换为合适的类型
我在 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
。如果不是,只需转换为合适的类型