java通过反射批量生成set设置值

对于大批量属性的类,里面有有很多属性,这个时候一个个写还是很痛苦的,通过java反射来获取这些类里面的方法,从而得到自己想要的set属性的字符串再好不过了。

下面是一个JDOM设置值的,直接反射生成即可
project.setSeatPicUrl(node.getChildText("seatPicUrl"));
project.setId(node.getChildText("id"));
project.setCategoryID(node.getChildText("categoryID"));
project.setSonCategoryID(node.getChildText("sonCategoryID"));
project.setSiteID(node.getChildText("siteID"));
project.setSiteName(node.getChildText("siteName"));
project.setSubHead(node.getChildText("subHead"));
project.setIsETicket(node.getChildText("isETicket"));
project.setMinPrice(node.getChildText("minPrice"));
project.setMaxPrice(node.getChildText("maxPrice"));
project.setPriceStr(node.getChildText("priceStr"));
project.setSellEndTime(node.getChildText("sellEndTime"));
project.setShowTime(node.getChildText("showTime"));
project.setCanSell(node.getChildText("canSell"));
project.setIsTest(node.getChildText("isTest"));
project.setVenueName(node.getChildText("venueName"));
project.setVenueID(node.getChildText("venueID"));
project.setIsXuanZuo(node.getChildText("isXuanZuo"));
project.setUpdateTime(node.getChildText("updateTime"));
project.setPerformIdList(node.getChildText("performIdList"));
project.setName(node.getChildText("name"));
project.setDescription(node.getChildText("description"));
project.setStatus(node.getChildText("status"));


package com.proxy.reflect;

/**
 * @author: (le.qiao)
 * @e-mail: [email protected]
 * @myblog: <a href="http://qiaolevip.iteye.com">http://qiaolevip.iteye.com</a>
 * @date: 2012-11-30
 * 
 */
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.proxy.bean.Project;

public class ReflectUser {

	public static void main(String[] args) throws Exception {
		/*
		 * 实列化类 方法2
		 */
		Project bean = new Project();
		// bean.setAge(100);
		// bean.setBirthday(new Date());
		// bean.setName("武汉");

		// 得到类对象
		@SuppressWarnings("rawtypes")
		Class cls = (Class) bean.getClass();

		/*
		 * 得到类中的所有属性集合
		 */
		Field[] fs = cls.getDeclaredFields();
		for (int i = 0; i < fs.length; i++) {
			Field f = fs[i];
			f.setAccessible(true); // 设置些属性是可以访问的
			// Object val = f.get(bean);// 得到此属性的值

			// System.out.println("name:" + f.getName() + "\t value = " + val);

			String type = f.getType().toString();// 得到此属性的类型
			if (type.endsWith("String")) {
				// System.out.println(f.getType() + "\t是String");
				f.set(bean, "12");        // 给属性设值
			} else if (type.endsWith("int") || type.endsWith("Integer")) {
				// System.out.println(f.getType() + "\t是int");
				f.set(bean, 12);       // 给属性设值
			} else {
				// System.out.println(f.getType() + "\t");
			}

		}

		/*
		 * 得到类中的方法
		 */
		Method[] methods = cls.getMethods();
		for (int i = 0; i < methods.length; i++) {
			Method method = methods[i];
			// if (method.getName().startsWith("get")) {
			// System.out.print("methodName:" + method.getName() + "\t");
			// System.out.println("value:" + method.invoke(bean));// 得到get 方法的值
			// }

			if (method.getName().startsWith("set")) {
				System.out.print(firstToLower(cls.getSimpleName()) + "." + method.getName() + "(node.getChildText(\""
						+ firstToLower(method.getName().substring(3)) + "\"));\n");
			}
		}
	}

	/**
	 * @param val
	 * @return
	 */
	public static String firstToLower(String val) {
		return val.substring(0, 1).toLowerCase() + val.substring(1);
	}

}


package com.proxy.bean;

import java.util.ArrayList;

/**
 * @author: (le.qiao)
 * @e-mail: [email protected]
 * @myblog: <a href="http://qiaolevip.iteye.com">http://qiaolevip.iteye.com</a>
 * @date: 2012-8-13
 * 
 */
public class Project {

	// 项目ID
	private String id;

	// 项目名称
	private String name;

	// 所属父类别
	private String categoryID;

	// 所属子类别
	private String sonCategoryID;

	// 城市ID
	private String siteID;

	// 城市名称
	private String siteName;

	// 项目详情描述
	private String description;

	// 一句话描述
	private String subHead;

	// 是否支持电子票(1-支持;0-不支持)
	private String isETicket;

	// 最低价格
	private String minPrice;

	// 最高价格
	private String maxPrice;

	// 价格快照
	private String priceStr;

	// 销售结束时间
	private String sellEndTime;

	// 演出时间
	private String showTime;

	// 是否可以购买(1-可以购买;0-不允许购买)
	private String canSell;

	// 是否是测试项目(1-是,0-不是)
	private String isTest;

	// 场馆名称
	private String venueName;

	// 场馆ID
	private String venueID;

	// 是否支持选座(1-支持选座;0-不支持选座)
	private String isXuanZuo;

	// 相关艺人信息节点
	// private String artistinfo;

	// 最后更新时间
	private String updateTime;

	// 商品状态(3,销售中;4,结束;7,预定;8,预售;10,测试;6,禁止显示)
	private String status;

	/** 座位表图片路径 */
	private String seatPicUrl;

	private List<String> performIdList = new ArrayList<String>();

	public String getSeatPicUrl() {
		return seatPicUrl;
	}

	public void setSeatPicUrl(String seatPicUrl) {
		this.seatPicUrl = seatPicUrl;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCategoryID() {
		return categoryID;
	}

	public void setCategoryID(String categoryID) {
		this.categoryID = categoryID;
	}

	public String getSonCategoryID() {
		return sonCategoryID;
	}

	public void setSonCategoryID(String sonCategoryID) {
		this.sonCategoryID = sonCategoryID;
	}

	public String getSiteID() {
		return siteID;
	}

	public void setSiteID(String siteID) {
		this.siteID = siteID;
	}

	public String getSiteName() {
		return siteName;
	}

	public void setSiteName(String siteName) {
		this.siteName = siteName;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getSubHead() {
		return subHead;
	}

	public void setSubHead(String subHead) {
		this.subHead = subHead;
	}

	public String getIsETicket() {
		return isETicket;
	}

	public void setIsETicket(String isETicket) {
		this.isETicket = isETicket;
	}

	public String getMinPrice() {
		return minPrice;
	}

	public void setMinPrice(String minPrice) {
		this.minPrice = minPrice;
	}

	public String getMaxPrice() {
		return maxPrice;
	}

	public void setMaxPrice(String maxPrice) {
		this.maxPrice = maxPrice;
	}

	public String getPriceStr() {
		return priceStr;
	}

	public void setPriceStr(String priceStr) {
		this.priceStr = priceStr;
	}

	public String getSellEndTime() {
		return sellEndTime;
	}

	public void setSellEndTime(String sellEndTime) {
		this.sellEndTime = sellEndTime;
	}

	public String getShowTime() {
		return showTime;
	}

	public void setShowTime(String showTime) {
		this.showTime = showTime;
	}

	public String getCanSell() {
		return canSell;
	}

	public void setCanSell(String canSell) {
		this.canSell = canSell;
	}

	public String getIsTest() {
		return isTest;
	}

	public void setIsTest(String isTest) {
		this.isTest = isTest;
	}

	public String getVenueName() {
		return venueName;
	}

	public void setVenueName(String venueName) {
		this.venueName = venueName;
	}

	public String getVenueID() {
		return venueID;
	}

	public void setVenueID(String venueID) {
		this.venueID = venueID;
	}

	public String getIsXuanZuo() {
		return isXuanZuo;
	}

	public void setIsXuanZuo(String isXuanZuo) {
		this.isXuanZuo = isXuanZuo;
	}

	// public String getArtistinfo() {
	// return artistinfo;
	// }
	//
	// public void setArtistinfo(String artistinfo) {
	// this.artistinfo = artistinfo;
	// }

	public String getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(String updateTime) {
		this.updateTime = updateTime;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public List<String> getPerformIdList() {
		return performIdList;
	}

	public void setPerformIdList(List<String> performIdList) {
		this.performIdList = performIdList;
	}

}

你可能感兴趣的:(反射,reflect,批量,设置值)