<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
    如果我回罵的話,那還真把你當人看了
    主站蜘蛛池模板: 丝袜足液精子免费视频| 猫咪社区免费资源在线观看 | 亚洲AV无码乱码在线观看牲色| 免费无遮挡无遮羞在线看| 亚洲精品无码高潮喷水在线| 一个人看的www在线观看免费| 看全免费的一级毛片| 亚洲自偷自偷精品| 午夜亚洲福利在线老司机| 免费91最新地址永久入口| 亚洲性无码AV中文字幕| 亚洲线精品一区二区三区影音先锋| 永久看日本大片免费35分钟| 精品久久久久久亚洲中文字幕| 亚洲AV无码成人精品区在线观看| 手机在线毛片免费播放| 热99RE久久精品这里都是精品免费| 亚洲一区二区三区免费在线观看| 久久亚洲中文字幕精品一区| 久久久久国产精品免费免费搜索 | 国产AV无码专区亚洲AV男同| 午夜精品在线免费观看| 青青青国产手机频在线免费观看| 亚洲av永久无码天堂网| 亚洲天堂中文字幕| 亚洲精品综合久久| 成年女人免费视频播放体验区| 久久香蕉国产线看免费| 羞羞漫画页面免费入口欢迎你| 精品久久久久久亚洲精品| 久久久亚洲欧洲日产国码农村| 国产在线98福利播放视频免费| 日本片免费观看一区二区| 最好免费观看高清在线| 色吊丝性永久免费看码| 亚洲色大情网站www| 亚洲码在线中文在线观看| 亚洲国产精彩中文乱码AV| 国产性爱在线观看亚洲黄色一级片| 成人男女网18免费视频| 色播精品免费小视频|