反射机制的基本用法

本文深入解析Java反射机制,介绍其核心特点与功能,包括如何在未导入包的情况下使用依赖类,以及通过实例演示如何获取类及其父类的信息,如方法、属性等,同时展示如何调用方法和修改属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、反射机制的最大特点:

  • 可以在不导入(import)包到代码里的前提下使用依赖类。

二、反射机制的功能:

  • 已知一个实例对象
    • 获得该实例对象的本类及父类的指定或全部信息
      • 类:类名、父类名、包名等。
      • 方法:方法名、方法修饰符列表、返回值类型、参数列表
      • 成员属性:属性类型、属性名称

三、实例:

String className = "com.leon.java.reflect.Person";

    ---->1.得到该字符串所指代类的Class对象
        Class<?> cls = Class.forName(className); 

        ---->2.通过该类的Class对象,得到父类Class对象
            Class<?> superclass = cls.getSuperclass();    
        
        ---->3.通过该类的Class对象,得到父接口Class对象
            Class<?>[] clazz = cls.getInterfaces();   

        ---->4.通过该类的Class对象,得到该类的构造方法,并实例化对象
            Object obj = cls.getConstructor().newInstance();

        ---->5.通过该类的Class对象,得到该类的普通方法
            String setMethodName = "setName";
            Method method = cls.getDeclaredMethod(setMethodName, String.class);
            
            ---->6.通过该类的实例化对象,使用该方法        
                method.invoke(obj,value);// 等价于:Person对象.setName(value);
                String getMethodName = "getName";
                Method getMethod = cls.getDeclaredMethod(getMethodName);//getter没有输出
                System.out.println(getMethod.invoke(obj));
            
            ---->7.通过该类的实例化对象,获取并修改该类的属性
                Field name = cls.getDeclaredField("name");
                name.setAccessible(true);//解除封装,否则会访问不了,报错:java.lang.IllegalAccessException
                name.set(obj,"小屁孩");

四、类关系图:五、实例关系图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值