一个类中要有这个名字的变量,你才能使用它。所以假设有一个类
public class SomeObject{
private String msg0,msg1,msg2,msg3,msg4,msg5;//既然这样,干吗不定义一个数组呢?
...
public void setMsg5(String msg){
this.msg5=msg;
}
public String getMsg5(){
return msg5;
}
...
}
OK,不管这样声明变量是否合理,有一个办法可以使用变量的值。
假设为所有这样的变量设置了get和set方法(如上代码),则可以像下面这样使用
String methodNameGet="getMsg";
String methodNameSet="setMsg";
SomeObject o=new SomeObject();
Method mg=null;
try {
mg = o.getClass().getMethod(ng,null);
msg=mg.invoke(o,null);
System.out.println("msg"+i+"="+msg);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
这个过程真有点费事,用数组也许比较明智
public class SomeObject{
private String msg0,msg1,msg2,msg3,msg4,msg5;//既然这样,干吗不定义一个数组呢?
...
public void setMsg5(String msg){
this.msg5=msg;
}
public String getMsg5(){
return msg5;
}
...
}
OK,不管这样声明变量是否合理,有一个办法可以使用变量的值。
假设为所有这样的变量设置了get和set方法(如上代码),则可以像下面这样使用
String methodNameGet="getMsg";
String methodNameSet="setMsg";
SomeObject o=new SomeObject();
Method mg=null;
try {
mg = o.getClass().getMethod(ng,null);
msg=mg.invoke(o,null);
System.out.println("msg"+i+"="+msg);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
这个过程真有点费事,用数组也许比较明智
解决方案 »
- 类似于数字金字塔的题目,实在是不知道用嵌套循环怎么来写算法,急啊
- 大家好,搞不懂这个执行后的结果为什么是这个呢?
- 请问:如何实现窗体的放大缩小,使用画布的重画功能吗?
- java小错误
- 请帮忙编写一下程序,给分!!!
- 请看这段程序,我没有办法了
- 网络大协作:用java开发机器人站点,欢迎有志者加盟。。。。
- 怪问题???我装了j2re-1_3_1_01a-win-i.exe 可是其它组件不能用了,如我用borland的XYLayout
- 请教:学JAVA,看那本书比较好一点(对于低,中,高级人员)?
- 关于java 定时查询数据库的问题
- jbuilder2005在开发web应用程序时,当编译一个.java后如何自动放入web-info\classes下?
- 简单问题,谈谈您的看法!
String methodNameGet="getMsg";
String methodNameSet="setMsg";
SomeObj o=new SomeObj();
Object msg;
for(int i=0;i<=5;i++){
String ng=methodNameGet+i;
Method mg=null;
try {
mg = o.getClass().getMethod(ng,null);
msg=mg.invoke(o,null);
System.out.println("msg"+i+"="+msg);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
不过没有这样使用过变量,我一般都是用数组或者集合来解决的