- ClassWriter繼承ClassVisitor
- 構(gòu)造方法ClassVisitor(api,nextClassVisitor)
ClassVisitor構(gòu)造方法是鏈表形式的粪躬,nextClassVisitor就是下一個(gè)節(jié)點(diǎn)ClassVisitor信殊,鏈表最后一個(gè)節(jié)點(diǎn)為ClassWriter。
ClassVisitor1-> ClassVisitor2-> ClassVisitor3->ClassWriter
ClassVisitor的super方法默認(rèn)實(shí)現(xiàn)方式就是調(diào)用nextClassVisitor方法父虑,所以在默認(rèn)情況下調(diào)用的都是ClassWriter。
因?yàn)镃lassVisitor的鏈表關(guān)系導(dǎo)致MethodVisitor也為鏈表形式妒峦。
MethodVisitor1-> MethodVisitor2-> MethodWriter
只要鏈表沒(méi)斷杏节,最后指向MethodWriter和ClassWriter的內(nèi)部實(shí)現(xiàn)時(shí),才會(huì)真正執(zhí)行字節(jié)碼改寫邏輯乐导。
所以增加苦丁,刪除一個(gè)類或者方法,只要增加一個(gè)鏈路或斷開(kāi)一個(gè)鏈路即可