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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    JRuby中調用java帶可變參數的方法

    Posted on 2008-06-14 22:39 dennis 閱讀(2182) 評論(1)  編輯  收藏 所屬分類: 動態語言
        今天同事遇到的問題,用JRuby調用一個java方法,該方法使用了jdk1.5的可變參數。我一開始以為只要簡單地將可變參數表示為數組即可,例如下面的兩個java類:
    public class Echo{
        
    public void echo(String name){
           System.out.println(name);
        }
    }
    public class Test{
        
    public void hello(String name,Echoargs){
            System.out.println(
    "hello,"+name);
            
    for(Echo e:args){
                e.echo(name);
            }
        }
    }
       我想在jruby中調用Test的hello方法,該方法有個可變參數args。所謂可變參數經過編譯后其實也就是數組,這個可以通過觀察字節碼知道,那么如果用數組來調用可以不?
    require 'java'
    require 
    'test.jar'
    include_class 
    'Test'
    include_class 
    'Echo'
    t.hello(
    "dennis")  #報錯,參數不匹配
    t.hello("dennis",[])  #報錯,類型不匹配
       很遺憾,這樣調用是錯誤的,原因如上面的注釋。具體到類型不匹配,本質的原因是JRuby中的數組與java中對數組的字節碼表示是不一致的,JRuby中的數組是用org.jruby.RubyArray類來表示,而hello方法需要的數組卻是是[LEcho。解決的辦法就是將JRuby的數組轉成java需要的類型,通過to_java方法,因而下面的調用才是正確的,盡管顯的麻煩:
    require 'java'
    require 
    'test.jar'
    include_class 
    'Test'
    include_class 
    'Echo'
    t
    =Test.new
    t.hello(
    "dennis",[].to_java("Echo"))
    e1
    =Echo.new
    t.hello(
    "dennis",[e1].to_java("Echo"))
    e2
    =Echo.new
    t.hello(
    "dennis",[e1,e2].to_java("Echo"))



    評論

    # re: JRuby中調用java帶可變參數的方法  回復  更多評論   

    2008-06-17 14:10 by dennis
    @Jack.Wang
    如果我回罵的話,那還真把你當人看了
    主站蜘蛛池模板: 美女扒开尿口给男人爽免费视频| 日韩视频免费在线| 一个人晚上在线观看的免费视频 | 国产成人综合久久精品亚洲| 亚洲午夜未满十八勿入| 亚洲中文字幕无码久久精品1| 成年美女黄网站18禁免费 | 亚洲最新视频在线观看| 国产亚洲一区区二区在线| 国产真人无遮挡作爱免费视频| 成人免费的性色视频| 久久亚洲免费视频| 特级做A爰片毛片免费看无码 | 亚洲人成网站色在线入口| 好男人看视频免费2019中文 | 亚洲a级片在线观看| 蜜芽亚洲av无码精品色午夜| 亚洲中文字幕在线观看| 亚洲乱码中文字幕久久孕妇黑人| www.亚洲色图| 无码欧精品亚洲日韩一区夜夜嗨 | 国产亚洲av人片在线观看| 亚洲精品黄色视频在线观看免费资源| 91在线视频免费播放| 999国内精品永久免费视频| 巨波霸乳在线永久免费视频| 久久九九全国免费| 野花香高清视频在线观看免费| 国产精品偷伦视频免费观看了 | 国产精品成人四虎免费视频| 成人性生交视频免费观看| 99久久久精品免费观看国产| 大学生一级毛片免费看| 无码中文字幕av免费放| 成人影片麻豆国产影片免费观看| 中国在线观看免费国语版| 成年人性生活免费视频| 大学生美女毛片免费视频| 国产jizzjizz免费看jizz| 亚洲午夜AV无码专区在线播放| 国产成人精品日本亚洲专区|