<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综合色区无码专区桃色| 亚洲AV无码一区二区三区网址| 曰批全过程免费视频播放网站| 怡红院亚洲怡红院首页| 最新亚洲人成网站在线观看| 在线观看视频免费完整版| 久久国产亚洲高清观看| 免费jjzz在线播放国产| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 香蕉高清免费永久在线视频| 亚洲国产一区在线观看| 免费毛片a在线观看67194| 久久精品国产亚洲av高清漫画| 久久成人无码国产免费播放| 久久精品亚洲乱码伦伦中文| 国产亚洲精品2021自在线| 处破痛哭A√18成年片免费| 午夜在线a亚洲v天堂网2019| 思思re热免费精品视频66| 亚洲人成777在线播放| 99麻豆久久久国产精品免费| 亚洲欧洲∨国产一区二区三区| 成人av片无码免费天天看| 国产精品国产免费无码专区不卡 | 亚洲国产日产无码精品| 久久成人国产精品免费软件| 亚洲婷婷天堂在线综合| 在线看片免费不卡人成视频| 亚洲日韩一区二区一无码| 日本一道一区二区免费看 | 青青草原亚洲视频| 日本亚洲欧美色视频在线播放 | 亚洲精品视频在线观看免费| 亚洲码欧美码一区二区三区| 亚洲色无码一区二区三区| 国产精品永久免费10000| 一级中文字幕免费乱码专区| 亚洲综合精品一二三区在线|