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");

  • 相关阅读:
    Intellij IDEA 常用快捷键
    @Transient注解----Hiberbate
    tomcat:域名指向项目名
    java实现全排列
    Bean不同配置方式的比较
    Spring MVC:在jsp中引入css
    Spring中Bean的作用域
    第9章 初识HAL固件库
    第8章 自己写库—构建库函数雏形
    第7章 使用寄存器点亮LED灯
  • 原文地址:https://www.cnblogs.com/key1309/p/6603625.html
Copyright © 2011-2022 走看看