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; } }