现在的位置: 首页 > 综合 > 正文

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

2013年09月08日 ⁄ 综合 ⁄ 共 2400字 ⁄ 字号 评论关闭

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

【上篇】
【下篇】

抱歉!评论已关闭.