首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

利用反照给JAVABEAN实例赋值

2012-12-25 
利用反射给JAVABEAN实例赋值package com.utilimport java.lang.reflect.Methodimport java.util.HashMap

利用反射给JAVABEAN实例赋值

package com.util;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.dom4j.Document;
import org.dom4j.Element;

import alarminterface.CglibBean;
import backupsubsystem.testclient.TestBean;

public class ParameterUtil {

? public static void main(String[] args)
???? {
??????? /* XmlHandle xmlHandle = new XmlHandle();
???????? try
???????? {
???????????
???????????? Document document = null;
???????????? document = xmlHandle.getXmlFromFile("conf/Test.xml");
???????????? List root = document.selectNodes("/conf/action");
????????????
???????????? Map hm = new HashMap();
???????????? TestBean beans = new TestBean();
???????????? if (root != null)
???????????? {
???????????? ?for(Object o:root){
???????????? ??
???????????????????? Element e = (Element) o;
???????????????????
???????????????????? loopElement(e,hm);
???????????????? }
???????????? ?
???????????? ?Iterator iter = hm.entrySet().iterator();
???? ???while (iter.hasNext()) {
???? ???? Map.Entry m=(Map.Entry)iter.next();
???? ???? setFormBean(beans,(String)m.getKey(),(String)m.getValue());
???? ????// System.out.println(m.getKey()+"aaa");
???? ???}
????????????
???????????? }
???????????? System.out.println(beans.getCon_driver()+":"+beans.getCon_url());
???????
???????? } catch (Exception e)
???????? {
??????????? e.printStackTrace();
???????? }*/
???? }

?

//该方法第一个参数就是你要填充数据的BEAN,第二个参数是具体给哪个参数赋值,第三个参数是赋值的数据
?public static void setFormBean(Object bean,String key,String value) {
??Class c = bean.getClass();
??//System.out.println(c+":"+key+":"+value);
??Method[] ms = c.getMethods();
??for (int i = 0; i < ms.length; i++) {
???String name = ms[i].getName();
???if (name.startsWith("set")) {
????Class[] cc = ms[i].getParameterTypes();
????if (cc.length == 1) {
?????String type = cc[0].getName(); // parameter type
?????try {
??????// get property name:
??????String prop = Character.toLowerCase(name.charAt(3))
????????+ name.substring(4);
??????//System.out.println("%% "+prop);
??????// get parameter value:
??????String param = value;
?????
??????if(key.equals(prop))
??????{
???????if (param != null && !param.equals("")) {
????????// ms.setAccessible(true);
????????if (type.equals("java.lang.String")) {
?????????ms[i].invoke(bean, new Object[] { param });
????????} else if (type.equals("int")
??????????|| type.equals("java.lang.Integer")) {
?????????ms[i].invoke(bean, new Object[] { new Integer(
???????????param) });
????????} else if (type.equals("long")
??????????|| type.equals("java.lang.Long")) {
?????????ms[i].invoke(bean, new Object[] { new Long(
???????????param) });
????????} else if (type.equals("boolean")
??????????|| type.equals("java.lang.Boolean")) {
?????????ms[i].invoke(bean, new Object[] { Boolean
???????????.valueOf(param) });
????????} else if (type.equals("java.util.Date")) {

????????}
???????}
???????break;
??????}
??????
??????
?????} catch (Exception ex) {
??????ex.printStackTrace();
?????}
????}
???}
??}
?}
?

?
?
?
?
}

热点排行