zoukankan      html  css  js  c++  java
  • Java中的反射

    Set/Get 属性值

    注意:不要使用 clazz.getField("name"),字段一般都是私有的,该方法受访问修饰符的限制。

    public static void main(String[] args) throws ClassNotFou... {

          

           Class clazz = Class.forName("Study.Student");

                 

           Object obj=clazz.newInstance();   //创建对象的实例

          

           setProperty("name","GoldenKey",clazz,obj);

           setProperty("age",13,clazz,obj);

          

           System.out.println(">>>" + getProperty("name",clazz,obj));

           System.out.println(">>>" + getProperty("age",clazz,obj));

        }

       

        public static void setProperty(String key,Object value,Class clazz,Object obj) throws ...{

           Field[] fs = clazz.getDeclaredFields();

           for(Field fd : fs ){

               if(fd.getName().equals(key)){

                  fd.setAccessible(true);

                  fd.set(obj, value);

               }

           }

        }

       

        public static Object getProperty(String key,Class clazz,Object obj) throws ...{

           Field[] fs = clazz.getDeclaredFields();

           for(Field fd : fs ){

               if(fd.getName().equals(key)){

                  fd.setAccessible(true);

                  return fd.get(obj);

               }

           }

           return null;

        }

    获取/调用 方法

    Class clazz = Class.forName("Study.Student");

     

           //获取并调用两个参数的构造器

           Constructor constructor = clazz.getConstructor(String.class,int.class);

           Object obj = constructor.newInstance("zhagnsan",30);

          

           //获取的是该类中的公有方法和父类中的公有方法。

           Method[] methods = clazz.getMethods();

          

           //想要获取私有方法。必须用getDeclearMethod();

           Method method1 = clazz.getDeclaredMethod("method", null);

          

           //获取特定方法

           Method method = clazz.getMethod("show", int.class,String.class);

          

           // private method可访问

           method1.setAccessible(true);

     

           //获取静态方法

           Method method3 = clazz.getMethod("function",null);

           method3.invoke(null,null);

          

           //执行一个方法

           method.invoke(obj, 39,"hehehe");

  • 相关阅读:
    第四节:对托管资源使用终结器
    django 从零开始 8 用户登录验证 待测
    django 从零开始 7 数据库模型关联属性
    django 从零开始 6 数据库模型增删改查
    django 从零开始 5 数据库模型创建
    django 从零开始 4 404页面和500页面设置
    django 从零开始 3认识url解析
    django 从零开始 2迁移模型数据到数据库中和admin初识
    django 从零开始 制作一个图站 1环境的配置以及测试本地服务器
    django学习笔记 多文件上传
  • 原文地址:https://www.cnblogs.com/key1309/p/6603625.html
Copyright © 2011-2022 走看看