<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-204  評論-149  文章-0  trackbacks-0

    假如現有兩個API,AIPa,和APIb,兩個api定義的類,接口,功能均完全相同,但是有寫細微差別,比如說方法的參數類型不同,方法的返回值不同等等。
    比如APIa中一個類A的方法為public int add(String a,String b)
    比如APIb中的一個類A的方法為 public int add(int a,int b)

    之前有一程序是使用APIa編寫的(現在只提供此程序的 class文件,不提供程序的源代碼,不允許修改程序的源代碼),現在要使這個程序能夠在APIb下能夠使用??

    方法一不修改APIb的classes文件,而是修改應用程序的classes文件,將掃描原始應用程序的class文件,將class文件中用到APIa的方法轉換成APIb的方法??,這個應該不叫轉換,比如在程序中調用a.add("1","2")時,在方法調用前將方法棧中的字符串參數轉換成數字,使用javassist怎么來做,使用bcel怎么來做??

    方法二不修改應用程序的classes文件,而是修改APIb的classes文件,是將APIb的接口形式轉換為APIa的形式,使用javassist重寫APIb的方法,對APIb的所有方法進行包裝成APIa的方法,然后使用重寫的APIb的classes文件來允許程序。這個使用javassist應該比較方便,使用becl?
    這個就有點不方便了,如果APIb的類庫比較大的話,API間不一致的地方也比較多的話,都需要自己重寫,相當于重新包裝了這個APIb,需要修改APIb的classes文件,有可能其他程序要用到這個APIb。

    還不太清楚,在仔細想想怎么來做,接下來的工作自己寫兩套簡單的API,然后試驗試驗。
    剛開始想的是使用方法二來做,好像這個不太現實,應該是程序使用到了哪個方法,就對這個方法來進行修改,還是方法一好點。
    再好好看看java虛擬機規范。。。

    這個只是一個簡單問題的提出,而我實際要轉換的程序要比這個復雜,但是基本原理就這了。
    tmd,花了一天多把java虛擬機規范看了好幾章,我都佩服自己的學習能力,他媽的為什么就找不到實習了?

    posted on 2009-08-12 12:16 Frank_Fang 閱讀(432) 評論(0)  編輯  收藏 所屬分類: bcel javassist
    主站蜘蛛池模板: 国产成人亚洲精品91专区手机| 久久亚洲国产成人亚| 免费爱爱的视频太爽了| 无码国产精品一区二区免费I6| 最近中文字幕免费完整| jjizz全部免费看片| 亚洲视频在线观看免费视频| 久久福利资源网站免费看| 亚洲视频在线观看免费视频| 国产91色综合久久免费分享| 免费不卡视频一卡二卡| 青春禁区视频在线观看直播免费| 国产一卡二卡3卡四卡免费| 18禁超污无遮挡无码免费网站国产 | 免费观看一级毛片| 免费无码一区二区三区蜜桃大| 日韩高清免费在线观看| 又黄又爽无遮挡免费视频| 亚洲AV日韩精品一区二区三区| 亚洲午夜精品久久久久久浪潮| 亚洲色精品vr一区二区三区| 国产成人A人亚洲精品无码| 久久精品国产亚洲AV无码麻豆| 精品日韩亚洲AV无码一区二区三区| 亚洲精品综合久久中文字幕| 亚洲午夜国产精品无卡| 亚洲欧美日韩综合久久久久 | 亚洲午夜久久久久久久久电影网 | 4399好看日本在线电影免费| 在线观看视频免费完整版| 日本不卡高清中文字幕免费| MM131亚洲国产美女久久| 亚洲另类激情综合偷自拍图| 亚洲美女人黄网成人女| 亚洲日韩AV一区二区三区四区| 国产亚洲Av综合人人澡精品| 国产成人无码免费看片软件 | 久久久久久久久无码精品亚洲日韩| 免费在线观看亚洲| a级毛片免费播放| 国产精品入口麻豆免费观看|