<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
    如果我回罵的話,那還真把你當人看了
    主站蜘蛛池模板: 国产成人精品高清免费| 免免费国产AAAAA片| 亚洲成a人片在线观看国产| 亚洲乱码国产乱码精华| 成年人性生活免费视频| 亚洲欧美日韩综合久久久久| 成年女人色毛片免费看| 亚洲欧美日韩一区二区三区| 超pen个人视频国产免费观看| 国产午夜精品理论片免费观看 | 亚洲国产一二三精品无码| 亚洲AV成人片无码网站| 四虎永久在线精品免费观看地址| 亚洲AV无码成人精品区在线观看 | 国产精品亚洲va在线观看| 国产美女无遮挡免费视频| 欧洲亚洲综合一区二区三区| 免费一级毛片一级毛片aa| 一级特黄a大片免费| 亚洲AV永久无码精品水牛影视| 亚洲av无码专区在线电影| 人人狠狠综合久久亚洲高清| 亚洲av无码一区二区三区在线播放| 污视频在线观看免费| 亚洲国产精品张柏芝在线观看| 无码人妻一区二区三区免费视频| 国产91色综合久久免费分享| 亚洲日韩精品国产3区| 亚洲av无码天堂一区二区三区| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲成a人片在线观看精品| 国产精品免费_区二区三区观看| 久久精品国产亚洲AV大全| 免费观看AV片在线播放| 国产精品亚洲小说专区| 亚洲av无码一区二区三区网站| 九九99热免费最新版| 亚洲中文字幕久在线| 亚洲人成网站18禁止一区| 在线观看成人免费视频不卡| 一级毛片试看60分钟免费播放|