Fastclass机制是什么,说下

参考答案

Fastclass机制是什么

  • CGLIB 是采用 FastClass 机制,实现对被拦截方法的调用的。
  • FastClass 机制,是对一个类的方法建立索引,通过索引直接调用相应的方法。

Fastclass机制的代码实例

public class test10 {
  //这里,tt可以看作目标对象,fc可以看作是代理对象;首先根据代理对象的getIndex方法获取目标方法的索引,
  //然后再调用代理对象的invoke方法就可以直接调用目标类的方法,避免了反射
    public static void main(String[] args){
        Test tt = new Test();
        Test2 fc = new Test2();
        int index = fc.getIndex("f()V");
        fc.invoke(index, tt, null);
    }
}

class Test{
    public void f(){
        System.out.println("f method");
    }
    
    public void g(){
        System.out.println("g method");
    }
}
class Test2{
    public Object invoke(int index, Object o, Object[] ol){
        Test t = (Test) o;
        switch(index){
        case 1:
            t.f();
            return null;
        case 2:
            t.g();
            return null;
        }
        return null;
    }
    //这个方法对Test类中的方法建立索引
    public int getIndex(String signature){
        switch(signature.hashCode()){
        case 3078479:
            return 1;
        case 3108270:
            return 2;
        }
        return -1;
    }
}

解析:

Test2 是 Test 的 Fastclass,在 Test2 中有两个方法 :getIndex 、invoke。

在 getIndex 方法中,对 Test 的每个方法建立索引,并根据入参(方法名+方法的描述符)来返回相应的索引。

Invoke 根据指定的索引,以 ol 为入参,调用对象 O 的方法,避免反射调用,效率提高了。

以上,是Java面试题【Fastclass机制】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

👇阅读作者更多技术干货👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧