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

  • 相关阅读:
    896. Monotonic Array单调数组
    865. Smallest Subtree with all the Deepest Nodes 有最深节点的最小子树
    489. Robot Room Cleaner扫地机器人
    JavaFX
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
    《Python CookBook2》 第一章 文本
  • 原文地址:https://www.cnblogs.com/changkai244/p/4115156.html
Copyright © 2020-2023  润新知