Fastclass机制是什么,说下

参考答案

Fastclass机制是什么

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

Fastclass机制的代码实例

  1. public class test10 {
  2. //这里,tt可以看作目标对象,fc可以看作是代理对象;首先根据代理对象的getIndex方法获取目标方法的索引,
  3. //然后再调用代理对象的invoke方法就可以直接调用目标类的方法,避免了反射
  4. public static void main(String[] args){
  5. Test tt = new Test();
  6. Test2 fc = new Test2();
  7. int index = fc.getIndex("f()V");
  8. fc.invoke(index, tt, null);
  9. }
  10. }
  11.  
  12. class Test{
  13. public void f(){
  14. System.out.println("f method");
  15. }
  16. public void g(){
  17. System.out.println("g method");
  18. }
  19. }
  20. class Test2{
  21. public Object invoke(int index, Object o, Object[] ol){
  22. Test t = (Test) o;
  23. switch(index){
  24. case 1:
  25. t.f();
  26. return null;
  27. case 2:
  28. t.g();
  29. return null;
  30. }
  31. return null;
  32. }
  33. //这个方法对Test类中的方法建立索引
  34. public int getIndex(String signature){
  35. switch(signature.hashCode()){
  36. case 3078479:
  37. return 1;
  38. case 3108270:
  39. return 2;
  40. }
  41. return -1;
  42. }
  43. }

解析:

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

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

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

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

输出,是最好的学习方法

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

—end—

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧