java invoke 1【动态调用类的方法】

来源:互联网 发布:java项目开发ppt 编辑:程序博客网 时间:2024/06/05 14:34

java invoke 1【动态调用类的方法】

 这个的例子,用在导入数据的时候,可以灵活的使用。很方便、实用。

1.User.java

package cvr.vo;public class User {private String username;private String password;private Integer value1,value2,value3,value4,value5,value6,value7,value8,value9,value10;public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getValue1() {return value1;}public void setValue1(Integer value1) {this.value1 = value1;}public Integer getValue10() {return value10;}public void setValue10(Integer value10) {this.value10 = value10;}public Integer getValue2() {return value2;}public void setValue2(Integer value2) {this.value2 = value2;}public Integer getValue3() {return value3;}public void setValue3(Integer value3) {this.value3 = value3;}public Integer getValue4() {return value4;}public void setValue4(Integer value4) {this.value4 = value4;}public Integer getValue5() {return value5;}public void setValue5(Integer value5) {this.value5 = value5;}public Integer getValue6() {return value6;}public void setValue6(Integer value6) {this.value6 = value6;}public Integer getValue7() {return value7;}public void setValue7(Integer value7) {this.value7 = value7;}public Integer getValue8() {return value8;}public void setValue8(Integer value8) {this.value8 = value8;}public Integer getValue9() {return value9;}public void setValue9(Integer value9) {this.value9 = value9;}}

2.Go.java

package cvr.go;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import cvr.vo.User;public class Go {public static void main(String[] args) {int [] vals = new int[]{1,2,3,4,5,6,7,8,9,10};User user = Go.setUserValues(vals);List list = Go.getUserValues(user);for (int i = 0; i < list.size(); i++) {int j = i+1;System.out.println("value" + j + "=" + list.get(i));}}public static User setUserValues(int [] vals) {User user = new User();try {//获取Class的对象Class c = user.getClass();for (int i = 1; i <= 10; i++) {//动态获取方法名String methodName = "setValue"+i;//设置方法的参数Class[] args = new Class[1];Integer u = new Integer(3);args[0] = u.getClass();Method method = c.getMethod(methodName, args);//调用方法method.invoke(user, vals[i-1]);}} catch (Exception e) {e.printStackTrace();}return user;}public static List getUserValues(User user) {List list = new ArrayList();try {Class c = user.getClass();for (int i = 1; i <= 10; i++) {String methodName = "getValue"+i;Method method = c.getMethod(methodName, null);Integer s = (Integer) method.invoke(user, null);list.add(s);}} catch (Exception e) {e.printStackTrace();}return list;}}




原创粉丝点击