浅谈Java反射的实现原理

本文从一个示例代码入手,探讨Java反射的实现原理,包括Class和Method对象的内部机制,反射调用的过程,以及性能影响因素。在反射调用中,当调用次数增加时,会动态生成字节码以提升性能。然而,Java反射调用速度较慢的原因主要包括接口的通用性导致的额外对象和内存开销,无法进行编译优化,以及按名检索的查找开销。
摘要由CSDN通过智能技术生成

从一段示例代码开始

        Class clz = Class.forName("ClassA");
        Object instance = clz.newInstance();
        Method method = clz.getMethod("myMethod", String.class);
        method.invoke(instance, "abc","efg");

前两行实现了类的装载、链接和初始化(newInstance方法实际上也是使用反射调用了<init>方法),后两行实现了从class对象中获取到method对象然后执行反射调用。试想一下,如果Method.invoke方法内,动态拼接成如下代码,转化成JVM能运行的字节码,就可以实现反射调用了。

     public Object invoke(Object obj, Object[] param){
        MyClass instance=(MyClass)obj;
        return instan
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值