首页 > 代码库 > Java_反射demo

Java_反射demo

package com.cnit.reflect;import java.lang.reflect.Field;import java.lang.reflect.Method;public class Main {    /**     * @param args     */    public static void main(String[] args) {        try {            Class<?> classObj = Class.forName("com.cnit.reflect.bean.Person");            Object obj = classObj.newInstance();            //设置变量值            setFieldValue(classObj, obj,"str", "wangwu");            System.out.println(getFieldValue(classObj, obj, "str"));            Object paramValue[] = new Object[1];            paramValue[0] = "liu si";            setMethodValue(classObj, obj, "setStr",paramValue , String.class);            System.out.println(getMethodValue(classObj, obj, "getStr"));;        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 给方法设值     * @param classLoad     *             类加载器     * @param obj     *             类的对象     * @param methodName     *             方法名     * @param pramValue     *             设置的参数的值     * @param parameterTypes     *             参数的类型     */    private static void setMethodValue(Class<?> classLoad,Object obj,String methodName,Object[] pramValue,Class<?>... parameterTypes) {        try {            Method method = classLoad.getDeclaredMethod(methodName, parameterTypes);            method.setAccessible(true);            method.invoke(obj, pramValue);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 获取方法的值     * @param classLoad     *             类加载器     * @param obj     *             类的对象     * @param methodName     *             方法名     * @return Object     *             返回的值     */    private static Object getMethodValue(Class<?> classLoad,Object obj,String methodName) {        try {            Method method = classLoad.getDeclaredMethod(methodName);            method.setAccessible(true);            return method.invoke(obj);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /**     * 设置属性的值     * @param classObj     *             类加载器     * @param obj     *         类的对象     * @param fieldValue     *             变量的值      */    private static void setFieldValue(Class<?> classObj,Object obj ,String fieldName,Object fieldValue) {        try {            Field field = classObj.getDeclaredField(fieldName);            field.setAccessible(true);            field.set(obj, fieldValue);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 获取属性的值     * @param classObj     *             类加载器     * @param obj     *         类的对象     * @return     *         变量值     */    private static Object getFieldValue(Class<?> classObj,Object obj,String fieldName) {        try {            Field field = classObj.getDeclaredField(fieldName);            field.setAccessible(true);            return field.get(obj);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }        }
package com.cnit.reflect.bean;public class Person {    private String str;    public String getStr() {        return str;    }    public void setStr(String str) {        this.str = str;    }        }

java 反射

Java_反射demo