2011-12-07 68 views
0

你好親愛的SOF成員!Java委託調用BCEL/ASM

我在找什麼? 我一直在尋找和尋找Web如何在類上實現/注入接口(當然這已經被編譯),並通過類上的接口添加所需的方法。我也一直在努力盡可能多地學習BCEL和ASM,但我的資源卻很低(即使有我親愛的朋友Google),所以我希望能在這裏找到幫助!我並不期望你能夠餵食我或任何東西,但我需要一些方向! :)我知道在ASM網站上有很棒的書,還有很多關於它們的教程,但我無法弄清楚,我怎麼可能像我之前說過的那樣添加界面/方法。 我試過了什麼? 我發現這個鏈接here,但它沒有按預期工作.. 我確切地知道我想做什麼,但我不知道我該如何實現它.. 繼承人的例子!

public class Cat { 
public int age; 
} 

public interface Animal { 
public int getAge(); 
} 

繼承人的實現,方法:

public int getAge(){ 
return age; 
} 

如此看重SOF成員,如何將這項工作呢?

回答

0

我已經有了BCEL的一些經驗,你想要的是從一個自定義類加載器開始,它檢測你想要重新定義的類;爲每個這樣的類獲取BCEL JavaClass對象(使用f.e. ClassLoaderRepository),然後根據自己的喜好修改該類。完成後,從JavaClass中獲取類文件,並使用ClassLoader#defineClass將其傳遞給JVM進行定義。

現在,爲了實現實際的方法,我建議編寫一個包含代碼的測試類,然後在生成的類文件上運行BCELifier,這將打印出生成該類文件所需的Java BCEL源代碼。檢查它並複製粘貼到您喜歡的位置。

+0

感謝您的幫助,現在給它一個鏡頭:3 – Ruuhkis