JAVA简易反射demo

本文介绍了Java反射的基本概念和使用,通过一个简单的Demo展示了如何获取类的成员方法并调用私有方法,以及破坏私有机制的过程。在示例中,通过反射调用了DesUtil类的getEncryptData方法对字符串进行加密。

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

简易反射demo

反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
(其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)
如图是类的正常加载过程:反射的原理在与class对象。
Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

以下就是一个简易的反射demo

import com.liao.encryption.DesUtil;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 反射测试
 *
 * @Author liaopj 2022/3/23
 */
public class Reflection {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        //或者通过包路径获取Class对象
        //Class<?> desUtilClass = Class.forName("com.liao.encryption.DesUtil");
        //获取实例化对象
        DesUtil DesUtil = DesUtil.class.getDeclaredConstructor().newInstance();
        // 直接通过实例化对象获取Class对象
    	Class<?> desUtilClass = DesUtil.getClass();
        //获取所有的成员方法,包括私有的(不包括继承的)
        Method[] methods = desUtilClass.getDeclaredMethods();
        for (Method method : methods){
            System.out.println(method.getName());
        }
        //利用反射破坏私有机制
        Method privateMethod = desUtilClass.getDeclaredMethod("getEncryptData",String.class);
        privateMethod.setAccessible(true);
        //需要两个参数,一个是要调用的对象(获取有反射),一个是实参
        System.out.println(privateMethod.invoke(DesUtil,"123456"));
    }
}

控制台输出:(打印反射对象中的全部方法名称和调用getEncryptData方法之后对"123456"加密后的结果)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值