讀碼農翻身之ASM

1、什麼是ASM
ASM可以動態的修改已經編譯過的class,還可以動態的生成新的java class。(動態:表示完全在運行時,在內存中完成的)
之所以叫ASM,創造者在創造的時候,爲了起名大費周章,後來突然想到C語言中的__asm__這個關鍵字,可以允許在C語言中寫點彙編。就把ASM這個關鍵字挪用了。

2、爲什麼需要ASM
能對現有的class進行修改

3、怎麼實現動態修改類?
ASM的核心主要是三個類,ClassReader、ClassWriter、ClassVisitor,用這三個類就可以去解析一個class字節碼,獲取字段、方法等信息了。當然最重要的可以對這些信息進行修改,最終形成一個代表新class的字節碼數組。(然後使用ClassLoader把這個字節碼數組Load到虛擬機中,然後通過反射調用)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章