变量名a1,a2,a3...是递增的
比如说上面这张图 假设这个变量名有50个 我需要对每个变量名判断太麻烦了
可能我脑子短路 目前就想获取变量名的数字
或者有什么好的思路 求大大指点
import java.lang.reflect.Method;
public class Test1 {
public static void main(String[] args) throws Exception, SecurityException {
Ea ea = new Ea();
// 通过对象得到字节码
Class clazz = ea.getClass();
// 循环反射
for(int i=1;i<4;i++){
Method m = clazz.getMethod("getState"+i);
System.out.println(m.invoke(ea)); // 执行方法
}
}
}
class Ea {
public String getState1(){
return "1";
}
public String getState2(){
return "2";
}
public String getState3(){
return "3";
}
}
java中局部变量的名称是获取不到的吧 而成员变量可以用反射的方式获取 也不可取 你还是想想其他的方法
建议 参考一下反射
利用java反射遍历变量名来取值
public static void main(String[] args) {
EaTest ea = new EaTest();
ea.setState1("1");
ea.setState2("2");
ea.setState3("3");
ea.setState4("4");
ea.setState5("5");
Method[] methods = ea.getClass().getDeclaredMethods();
try {
for (int i = 1;i<=5;i++){
String fieldName = "state" + i;
String getMethodName = "get" + fieldName.substring(0,1).toUpperCase() + fieldName.substring(1);
for (Method method : methods) {
if (method.getName().equals(getMethodName)) {
if (method.invoke(ea, new Object[]{}) != null
&& method.invoke(ea, new Object[]{}).toString().length() != 0) {
System.out.println(method.invoke(ea, new Object[] {}).toString());
} else {
}
}
}
}
} catch (Exception e) {
}
}