首页 > java > java反射的实现原理

java反射的实现原理

作者:bin

实现原理:
反射的Method类的invoke方法实际上是走的MethodAccessorImpl的invoke方法

1.MethodAccessorImpl对象对开始初始化时,用的是包含类NativeMethodAccessorImpl的DelegatingMethodAccessorImpl对象

2.所以最开始调用时实际上时调用类
NativeMethodAccessorImpl.invoke的方法

 private static native Object invoke0(Method var0, Object var1, Object[] var2);

3.然后达到阈值后,new一个新的
MethodAccessorGenerator对象替换DelegatingMethodAccessorImpl中的NativeMethodAccessorImpl

为什么有2个版本?
所以MethodAccessor实现有2个版本,一个是java版本,一个是本地方法的native版本。
native版本:开始启动时运行快,但随着时间变长运行速度变慢。
java版本:启动慢,随着运行时间变长速度变快。

您必须 [ 登录 ] 才能发表留言!