专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
Java编程精选  ·  330个“假补丁”差点混入主线?LinusT ... ·  12 小时前  
芋道源码  ·  Spring-Security ... ·  8 小时前  
芋道源码  ·  如何实现一个合格的分布式锁 ·  昨天  
51好读  ›  专栏  ›  ImportNew

深入分析 Java 方法反射的实现原理

ImportNew  · 公众号  · Java  · 2017-07-15 12:00

正文

请到「今天看啥」查看全文


一本,就把Java方法的反射机制实现撸了一遍。


一起GC血案谈到反射原理

https://mp.weixin.qq.com/s/5H6UHcP6kvR2X5hTj_SBjA


方法反射实例


public class ReflectCase {

public static void main(String[] args) throws Exception {

Proxy target = new Proxy();

Method method = Proxy.class.getDeclaredMethod("run");

method.invoke(target);

}

static class Proxy {

public void run() {

System.out.println("run");

}

}

}


通过Java的反射机制,可以在运行期间调用对象的任何方法,如果大量使用这种方式进行调用,会有性能或内存隐患么?为了彻底了解方法的反射机制,只能从底层代码入手了。


Method获取


调用Class类的getDeclaredMethod可以获取指定方法名和参数的方法对象Method。


  • getDeclaredMethod



其中privateGetDeclaredMethods方法从缓存或JVM中获取该Class中申明的方法列表,searchMethods方法将从返回的方法列表里找到一个匹配名称和参数的方法对象。


  • searchMethods



如果找到一个匹配的Method,则重新copy一份返回,即Method.copy()方法







请到「今天看啥」查看全文