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());
        }
    }
    
  • 相关阅读:
    生活中残忍的真相
    @ControllerAdvice 拦截异常并统一处理
    自律的人生
    50建议
    公众号自动发送红包
    增加记忆力方式
    MySQL行转列与列转行
    微人生的活法
    人生三出戏
    很重要的一点是 关注并坚持去做那些短期看不到效果,但对你影响深远的事情。
  • 原文地址:https://www.cnblogs.com/gbhh/p/13768157.html
Copyright © 2011-2022 走看看