zoukankan      html  css  js  c++  java
  • 通过反射调用方法和属性

    概述

    通过反射获取类的信息后,该怎么去使用它们?

    即调用方法,设置属性等

    实例

    /**
     * 通过反射做下面事情:
     * 1.动态创建对象
     * 2.获取方法并且执行方法
     * 3.获取属性
     */
    public class Demo04 {
        public static void main(String[] args) throws Exception{
            Class c1 = Class.forName("com.gbhh.reflections.User");
    //        构造一个对象,这样使用了无参数构造器
            User user = (User)c1.newInstance();
            System.out.println(user);
    //        通过构造器创建对象
            Constructor declaredConstructor = c1.getDeclaredConstructor(int.class, String.class, int.class);
            User user1 =(User)declaredConstructor.newInstance(1111,"嘟嘟嘟",20);
            System.out.println(user1);
    //        通过反射调用普通方法
            User user2 = (User)c1.newInstance();
            //通过反射获取一个方法,该方法目前无对象
            Method setName = c1.getDeclaredMethod("setName", String.class);
    //        激活调用方法,并且指定对象
            setName.invoke(user2,"dudu");
            System.out.println(user2.getName());
    //        通过反射操作属性
            User user3 = (User)c1.newInstance();
            Field age = c1.getDeclaredField("age");
    //        默认不能设置private属性,通过 setAccessible 关闭检查权限,即可设置,默认为false
            age.setAccessible(true);
            age.set(user3,21);
            System.out.println(user3.getAge());
        }
    }
    
  • 相关阅读:
    常用工具
    H5页面验收流程及性能验收标准
    埋点数据测试
    提高效率的必备工具
    移动APP安全测试
    Response响应相关
    AES加密解密
    Requests模块
    爬虫入门
    【CMDB】API传输验证
  • 原文地址:https://www.cnblogs.com/gbhh/p/13768157.html
Copyright © 2011-2022 走看看