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 反射