<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            java語言

            java使用反射技術示例

            時間:2025-04-26 06:34:23 java語言 我要投稿
            • 相關推薦

            java使用反射技術示例

              復制代碼 代碼如下:

              package com.java.db;

              import java.lang.reflect.Constructor;

              import java.lang.reflect.Field;

              import java.lang.reflect.InvocationTargetException;

              import java.lang.reflect.Method;

              import java.util.ArrayList;

              import java.util.Arrays;

              import java.util.Iterator;

              import java.util.List;

              import java.util.Map;

              import com.java.entity.BookShelf;

              import com.java.util.GetMetaDataCloumName;

              public class GetNewInstances{

              Class[] cl = {};

              Object[] ob = {};

              /**

              * 每次用完之后設為空 不然會累加

              */

              public void setNullToArrays(){

              this.cl = new Class[]{};

              this.ob = new Object[]{};

              }

              /**

              * copy Object數組

              *

              * @param obj

              * 構造方法里需要的實際值

              * @return

              */

              public Object[] getObjectArrays(Object obj) {

              ob = Arrays.copyOf(ob,ob.length + 1);

              ob[ob.length - 1] = obj;

              return ob;

              }

              /**

              * copy Class 數組

              *

              * @param cla

              * 要添加的class

              *

              * @return

              */

              @SuppressWarnings("unchecked")

              public Class[] getClassArrays(Class

              if (cla != null) {

              cl = Arrays.copyOf(cl,cl.length + 1);

              cl[cl.length - 1] = cla;

              return cl;

              }else{

              return cl;

              }

              }

              /**

              * 得到類的實例

              *

              * @param clazz

              * 要實例化的類

              * @return 實例化之后的類

              * @throws InstantiationException

              * @throws IllegalAccessException

              * @throws IllegalArgumentException

              * @throws SecurityException

              * @throws InvocationTargetException

              * @throws NoSuchMethodException

              */

              @SuppressWarnings("unchecked")

              public Object getClassNewInstance(Class

              throws InstantiationException, IllegalAccessException,

              IllegalArgumentException, SecurityException,

              InvocationTargetException, NoSuchMethodException {

              Object oj = null;

              Constructor[] cons = clazz.getDeclaredConstructors();// 得到構造函數

              Class[] cla = cons[1].getParameterTypes();

              System.out.println("提示用戶是否需要添加字段 構造函數參數的大小:"+cla.length);

              for (int i = 0; i < cla.length; i++) {

              String classStr = cla[i].toString();

              // System.out.println("參數的類型:"+classStr);

              if (classStr.equals("class java.lang.String")) {

              getClassArrays(String.class);

              } else if (classStr.equals("int")) {

              getClassArrays(int.class);

              } else if (classStr.equals("double")) {

              getClassArrays(double.class);

              } else if (classStr.equals("boolean")) {

              getClassArrays(boolean.class);

              } else if (classStr.equals("float")) {

              getClassArrays(float.class);

              } else if (classStr.equals("class java.lang.Integer")) {

              getClassArrays(Integer.class);

              }else if(classStr.equals("class java.lang.Float")){

              getClassArrays(Float.class);

              }

              }

              oj = clazz.newInstance();//返回當前對象 具體的實例化構造在BDOperater

              return oj;

              }

              /**

              * 通過構造函數得到具體的實例類

              * @param clazz

              * @return

              * @throws IllegalArgumentException

              * @throws SecurityException

              * @throws InstantiationException

              * @throws IllegalAccessException

              * @throws InvocationTargetException

              * @throws NoSuchMethodException

              */

              public Object getObjCon(Class

              Object obj=null;

              obj = this.getClassNewInstance(clazz);

              return obj;

              }

              /**

              * 得到對象的實例

              * @param clazz

              * @return

              * @throws InstantiationException

              * @throws IllegalAccessException

              */

              public Object getNewinstance(Class clazz) throws InstantiationException, IllegalAccessException{

              Object obj = null;

              obj = clazz.newInstance();

              return obj;

              }

              /**

              * 根據反射得到類中的所有屬性

              * @param clazz 需要被獲取屬性的類

              * @return 屬性集合

              * @throws SecurityException

              * @throws IllegalArgumentException

              * @throws InstantiationException

              * @throws IllegalAccessException

              * @throws InvocationTargetException

              * @throws NoSuchMethodException

              */

              public Field[] getFielsdArray(Classclazz) throws SecurityException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{

              Field[] fields = null;

              fields = clazz.getDeclaredFields();

              return fields;

              }

              /**

              * 根據字符串得到setter格式的屬性

              * @param str 需要格式化的屬性

              * @return

              */

              public String getSetterStr(String str){

              String info = null;

              String strValue = str.substring(0,1).toUpperCase();

              info = "set"+strValue+str.substring(1,str.length());

              return info;

              }

              /**

              * 把setXX還原為XX

              * @param str

              * @return

              */

              public String setSetStr(String str){

              String info = null;

              String strValue = str.substring(3,str.length());

              String lower = strValue.substring(0).toLowerCase().substring(0,1);

              info = lower+str.substring(4,str.length());

              return info;

              }

              /**

              * 得到類中的方法

              * @param clazz 需要的得到方法的類

              * @return

              */

              public Method[] getMethodsArray(Class clazz){

              Method[] methods = clazz.getMethods();

              return methods;

              }

              /**

              * 根據list實例化構造函數

              * @param listMap

              * @param clazz

              * @param tableName 數據庫名稱

              * @return

              * @throws NoSuchMethodException

              * @throws InvocationTargetException

              * @throws SecurityException

              * @throws IllegalArgumentException

              * @throws IllegalAccessException

              * @throws InstantiationException

              */

              @SuppressWarnings({ "unchecked" })

              public ListgetListByMap(List<Map> listMap,Class clazz,String tableName) throws InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, InvocationTargetException, NoSuchMethodException{

              ListlistLast = new ArrayList();

              ListmetaList = GetMetaDataCloumName.getCloumNameList(tableName);

              Iterator<Map> it = listMap.iterator();

              while(it.hasNext()){

              Mapmap = it.next();

              Iteratoriitt = metaList.iterator();

              while(iitt.hasNext()){

              String info = iitt.next();

              this.getObjectArrays(map.get(info));

              }

              System.out.println("調用反射:"+this.cl.length+" "+this.ob.length);

              Object Tobj = this.getClassNewInstance(clazz).getClass().getConstructor(this.cl).newInstance(this.ob);

              listLast.add(Tobj);

              this.setNullToArrays();

              }

              return listLast;

              }

              public static void main(String[] args) {

              GetNewInstances ge = new GetNewInstances();

              System.out.println(ge.getSetterStr("nameSpace")=="setNameSpace");

              System.out.println("1a"=="1a");

              System.out.println(ge.setSetStr("setNameSpace"));

              }

              }

            【java使用反射技術示例】相關文章:

            java system類使用方法示例05-03

            Java反射機制07-02

            java中反射機制05-26

            關于Java 反射的簡介05-12

            Java反射機制學習總結05-19

            深入理解java的反射07-16

            Java反射機制應用實踐05-31

            java運行異常示例02-07

            Java編程學習示例07-31

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看