PropertyDescriptor

public static void main(String[] args) throws Exception {
		MailForm bean = new MailForm();
		Map propName = new HashMap();
		propName.put("fromAddress", "su");
		propName.put("money", "21");
		Test t = new Test();
		t.setProperties(bean, propName);
		System.out.println(bean.getFromAddress() + " " + bean.getMoney());

	}

	public static void setProperties(Object bean, Map properties) {
		try {

			for (Iterator iter = properties.keySet().iterator(); iter.hasNext();) {
				String propName = (String) iter.next();

				PropertyDescriptor descriptor = new PropertyDescriptor(
						propName, bean.getClass());

				Class propertyType = descriptor.getPropertyType();

				Object value = decode(propertyType, (String) properties
						.get(propName));
				descriptor.getWriteMethod()
						.invoke(bean, new Object[] { value });

			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static Object decode(Class type, String value) throws Exception {
		if (type.getName().equals("java.lang.String")) {
			return value;
		}
		if (type.getName().equals("boolean")) {
			return Boolean.valueOf(value);
		}
		if (type.getName().equals("int")) {
			return Integer.valueOf(value);
		}
		if (type.getName().equals("long")) {
			return Long.valueOf(value);
		}
		if (type.getName().equals("float")) {
			return Float.valueOf(value);
		}
		if (type.getName().equals("double")) {
			return Double.valueOf(value);
		}
		if (type.getName().equals("java.awt.Color")) {
			StringTokenizer tokens = new StringTokenizer(value, ",");
			int red = Integer.parseInt(tokens.nextToken());
			int green = Integer.parseInt(tokens.nextToken());
			int blue = Integer.parseInt(tokens.nextToken());
			return new Color(red, green, blue);
		}
		if (type.getName().equals("java.lang.Class")) {
			return Class.forName(value);
		}
		return null;
	}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值