<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    LOVO《Oracle》反射的工具包

    把反射的一些相關東西弄到一起變成現在這個工具包

    package com.lovo.util;

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;

    public class ReflectUtil {

     
     private Class myClass = null;
     
     
     Object obj = null;

     private String className;

     
     public ReflectUtil() {
     }

     
     public ReflectUtil(String className) {
      try {
       this.myClass = Class.forName(className);
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      }
     }

     
     public Object createObject() {
      try {
       obj = myClass.newInstance();
      } catch (InstantiationException e) {
       e.printStackTrace();
      } catch (IllegalAccessException e) {
       e.printStackTrace();
      }
      return obj;
     }
     
     
     public Object createObject(Class[] paramTypes,Object[] paramValues) {
      //如果參數類型為空或個數為0,則調用無參構造方法
      if(paramTypes==null ||paramTypes.length==0){
       obj = this.createObject();  
      }else{
       Constructor myConstructor = null;
       try {
        myConstructor = this.myClass.getConstructor(paramTypes);
        obj = (Object) myConstructor.newInstance(paramValues);
       } catch (Exception e) {
        e.printStackTrace();
       }
      }
      return obj;
     }

     
     private Method getMethod(String methodname) {
      Method method = null;
      Method[] methods = myClass.getMethods();
      for (int i = 0; i < methods.length; i++) {
       if (methods[i].getName().equals(methodname)) {
        method = methods[i];
        break;
       }
      }
      return method;
     }

     
     public Object methodRun(String methodName, Object[] args) {
      Object result = methodInvoke(getMethod(methodName), args);
      ;
      return result;
     }

     
     private Object methodInvoke(Method method, Object[] args) {
      Object result = null;
      try {
       // 反射底層方法(調用方法對象的invoke方法)
       // invoke說明:調用obj實例對象的方法(相當于:obj.xXX();
       if(args==null || args.length==0){
        result = method.invoke(obj, new Object[]{null});
       }else{
        result = method.invoke(obj, args);
       }
       
      } catch (IllegalArgumentException e) {
       e.printStackTrace();
      } catch (IllegalAccessException e) {
       e.printStackTrace();
      } catch (InvocationTargetException e) {
       e.printStackTrace();
      }
      return result;
     }

     
     public List<String> getMethodNameList() {
      List<String> list = new ArrayList<String>();
      if (obj != null) {
       Class cls = obj.getClass();
       Method[] method = cls.getMethods();
       for (int i = 0; i < method.length; i++) {
        list.add(method[i].getName());
       }
      }
      return list;
     }

     public String[] getObjFieldsName() {
      Field[] fields = obj.getClass().getDeclaredFields();
      String[] names = new String[fields.length];
      for (int i = 0; i < fields.length; i++) {
       names[i] = fields[i].getName();
      }
      return names;
     }

     
     public Object[] getObjAttValues(String[] attList) {
      // 獲取類的屬性列表
      Object[] data = new Object[attList.length];

      for (int k = 0; k < attList.length; k++) {
       // 指定位置屬性
       String fieldName = attList[k];
       // 根據屬性計算得到get方法名
       String methodName = getMethodName("get", fieldName);
       try {
        // 定義參數對象
        Class[] types = new Class[] {};
        // 根據方法和參數對象,得到指定方法對象
        Method method = obj.getClass().getMethod(methodName, types);
        // 執行方法對象對應的方法(注意也要有參數)
        Object result = method.invoke(obj, new Object[0]);
        data[k] = result;

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

     
     public Object[] getObjAttValues(int[] fieldOrder) {

      // 獲取類的屬性列表
      Field[] fields = obj.getClass().getDeclaredFields();
      Object[] data = new Object[fieldOrder.length];

      for (int k = 0; k < fieldOrder.length; k++) {
       // 指定位置屬性
       String fieldName = fields[fieldOrder[k]].getName();
       // 根據屬性計算得到get方法名
       String methodName = getMethodName("get", fieldName);
       try {
        // 定義參數對象
        Class[] types = new Class[] {};
        // 根據方法和參數對象,得到指定方法對象
        Method method = obj.getClass().getMethod(methodName, types);
        // 執行方法對象對應的方法(注意也要有參數)
        Object result = method.invoke(obj, new Object[0]);
        data[k] = result;

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

     
     public void copyValuesFromArray(Object[] values) {

      // 獲取類的屬性列表
      Field[] fields = obj.getClass().getDeclaredFields();

      try {
       for (int i = 0; i < fields.length; i++) {
        // 根據屬性計算得到get方法名
        String methodName = getMethodName("set", fields[i].getName());
        Method method = obj.getClass().getDeclaredMethod(methodName,
          new Class[] { fields[i].getType() });
        String name = fields[i].getType().getName();

        if (values[i] != null) {
         if(name.equals("java.lang.Integer")){
          Integer tmpInteger = null;
          try{
           tmpInteger = Integer.valueOf(values[i].toString());
          }catch(Exception e){
           tmpInteger = null;
          }
          method.invoke(obj,new Object[]{tmpInteger});
         }else if(name.equals("java.lang.Double")){
          method.invoke(obj,new Object[]{Double.valueOf(values[i].toString())});
         }else if (name.equals("java.sql.Date")) {
          java.sql.Date dt = StringToDate(values[i].toString());
          method.invoke(obj, new Object[] { dt });
         } else {
          method.invoke(obj, new Object[] { values[i] });
         }

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

     
     public String objToString() {
      StringBuffer sb = new StringBuffer();

      // 獲取類的屬性列表
      Field[] fields = obj.getClass().getDeclaredFields();

      for (int i = 0; i < fields.length; i++) {
       // 根據屬性計算得到get方法名
       String methodName = getMethodName("get", fields[i].getName());
       try {
        // 定義參數對象
        Class[] types = new Class[] {};
        // 根據方法和參數對象,得到指定方法對象
        Method method = obj.getClass().getMethod(methodName, types);
        // 執行方法對象對應的方法(注意也要有參數)
        Object result = method.invoke(obj, new Object[0]);

        sb.append(fields[i].getName() + "=" + result + ""t");

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

      return sb.toString();
     }

     public Object getObj() {
      return obj;
     }

     public void setObj(Object obj) {
      this.obj = obj;
     }

     public String getClassName() {
      return className;
     }

     public void setClassName(String className) {
      this.className = className;
     }


     
     private static String getMethodName(String prefix, String fieldName) {
      return new StringBuffer(prefix).append(
        fieldName.substring(0, 1).toUpperCase()).append(
        fieldName.substring(1)).toString();
     }

     
     private static java.sql.Date StringToDate(String dtStr) {
      if (dtStr == null || dtStr.trim().length() == 0) {
       return null;
      } else {
       java.util.Date date = null;
       try {
        // 注意是大寫的MM
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        date = sdf.parse(dtStr);
        return new java.sql.Date(date.getTime());
       } catch (ParseException ex) {
        ex.printStackTrace();
        return null;
       }
      }
     }

    }

    posted on 2009-07-16 17:33 找個美女做老婆 閱讀(319) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲人成在线影院| 亚洲A∨无码无在线观看| 好大好深好猛好爽视频免费| 亚洲精品视频免费看| 99热这里有免费国产精品| 免费一级毛片无毒不卡| 大地影院MV在线观看视频免费| a级毛片在线视频免费观看| 免费观看一区二区三区| 免费91最新地址永久入口 | 亚洲精品一级无码鲁丝片| 无码专区一va亚洲v专区在线| 免费一级成人毛片| 亚洲性久久久影院| 亚洲精品乱码久久久久久久久久久久 | 亚洲国产乱码最新视频| 亚洲女子高潮不断爆白浆| 亚洲欧美乱色情图片| 国产偷国产偷亚洲清高APP| 香港特级三A毛片免费观看| 四虎永久在线精品免费一区二区 | 亚洲国产成人手机在线电影bd| 亚洲精品午夜久久久伊人| 97se亚洲国产综合自在线| 亚洲高清中文字幕免费| 精品久久久久久亚洲综合网| 在线播放免费人成视频网站| 最近中文字幕大全免费版在线| 在线看无码的免费网站| 无码国产精品一区二区免费I6| 日本高清免费不卡视频| 亚洲天堂中文字幕在线| 亚洲av最新在线网址| 亚洲人成电影网站| 亚洲AV无码一区二区三区鸳鸯影院| fc2免费人成在线视频| 91禁漫免费进入| 国产成人免费高清在线观看| 区久久AAA片69亚洲| 亚洲福利视频网址| 日韩成人精品日本亚洲|