Reflection Speciality
Reflection,这个逆子,破坏了面向对象三大特性中的封装性
Lost Method Param Original Name
Java1.8之前,反射获取的Method是拿不到方法的原始入参名字的,取而代之的是arg0、arg1等;
Java1.8之后,默认下,仍延续上述展示逻辑,但是添加了配置项,可以在javac编译时通过添加参数,保留方法的原始名字,方便在runtime阶段使用
javac -parameters GetRuntimeOriginalParameterName.java
Kotlin反射,默认保留方法的原始名字
综上,保留方法原始名称的配置,会增加编译后的.Class文件体积,这也是旧版本Java不保留的考量理由
详情参考:Java8反射机制下获取方法名、参数名(配置-parameters、Idea/Eclipse/Maven配置)
No original name,So?
当必须使用反射 + 必须在runtime阶段 获取方法的original name时,我们可以选择通过给入参添加注解的方式来实现,如我们在使用Retrofit框架创建接口方法时,不得不对每一个方法入参添加@Field
注解,就是上述原因所致
Reflection Use
Method
Method类的使用(详细) :blog.csdn.net/cnds123321/…