专注于Jsp开发,为Jsp开发提供原动力郑州网站建设 | 网站优化 | 郑州网络公司 | 洛阳网站建设 | 网站建设 | 北京网站建设
jsp空间
    栏目导航:
JAVA 新闻
配制Java环境
JAVA语言基础
JAVA实例教程
JAVA应用技巧
JAVA开发工具
JAVA设计模式
应用服务器
JAVA开发模式
    最近更新:
Java对象序列化所引起...
在Java EE Server中实...
Hibernate Annotation...
Java简单框架 JPA框架...
try,catch和finally语...
IoC基础介绍
由基本概念开始全面认...
Hibernate基于外键的查...
    点击排行:
tomcat简介
JSP六种内置对象
JSP过滤器实现---论坛...
计算机语言:JSP和ASP ...
JSP技术的强势和弱势
tomcat的概述
JSP 连数据库(MySQL &...
JAVA/JSP学习系列之 T...
JRuby中调用java带可变参数的方法
作者无:   加入时间:2008-11-21 17:22:38   点击次数:4

今天同事遇到的问题,用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.newt.hello("dennis",[].to_java("Echo"))e1=Echo.newt.hello("dennis",[e1].to_java("Echo"))e2=Echo.newt.hello("dennis",[e1,e2].to_java("Echo")) 


上一篇: Java对象序列化所引起的循环引用的思考
下一篇: 关于Java文件路径问题
关于我们 | 代理申请 | 付款方式 | 客户管理 | 友情链接 | 网站导航
版权所有 2008 三易网络(洛阳)科技开发有限公司
服务热线:0379-63921200   63265368(洛阳) 0371-63653120(郑州)
QQ在线客服: 312236232  516731113   Email:web@suneasy.cn

总部地址:纱厂南路41号中泰新城泰华苑12楼B座 郑州分公司地址:金水区圣菲城