在Ruby on Rails应用程序中重用Java代码 - 编程入门网
tstream_instance._classname
p "------------------------------"
p "For the TarArchive instance...."
p "Expecting: com.ice.tar.TarArchive , it is: " +
tararchive_instance._classname
导入 Java 类 清单 1 中的前三行将调用 RJB 的 import 方法,将所需的类分别导入到 Ruby 变量 tararchive、fileinputstream 和 file 中。必须指定类的完整包路 径 — 例如,TarArchive 类为 com.ice.tar.TarArchive,而 FileInputStream 类为 java.io.FileInputStream — 就像使用 java 命令运行应用程序那样。 实例化导入的类 接着,清单 1 创建导入类的对象。可以通过调用每个类的 new 方法创建类 ,就像创建任何 Ruby 对象一样(例如,tararchive.new)。但是这样做会调用 TarArchive 类的默认的构造函数(没有参数),而您并不希望这样做。 当重载了类的构造函数后,需要对上面的对象创建方法进行一些修改。在这 种情况下,必须按照下面的方式创建对象: object = Classname.new_with_sig(''signature'', parameter[,more parameters]) 第一个参数定义构造函数所需的参数的签名类型。它告诉 RJB 调用其输入参 数匹配指定签名的构造函数。 清单 1 中的第 4 个和第 5 个语句分别创建 file 和 fileinputstream 类 的对象,它们调用相应的构造函数,参数类型为 String。 在清单 1 的第 6 个语句中,TarArchive 类的其中一个构造函数接受 InputStream 类型的对象作为参数。该语句的签名类型是一个单独的 InputStream 输入参数。这些类型签名的详细细节在 getName API 的 Java SDK 文档中做了很好的描述。第二个参数是创建的 InputStream 类型对象。 检验对象创建 清单 1 中的其余内容将检验 RJB 创建的对象是否是指定类的对象,方法是 调用添加到每个对象的 _classname 方法。例如,调用 tararchive_instance._classname 将返回 com.ice.tar.TarArchive,这意味着 类被正确装载,并成功创建了该类的对象。 在Ruby on Rails应用程序中重用Java代码(4)时间:2010-12-03 IBM Santhosh Krishnamoor调用方法并捕获结果 将类装载到 Ruby 并从中创建了对象后,下一步是调用需要的方法并查看结 果。例如,您希望使用 TarArchive 类的 extractContents 方法,将样例文件 (test.tar)的内容提取到当前目录中。 和构造函数一样,可以使用两种方式调用方法。一种方式是直接调用方法, 例如:
当方法重载后,使用 _invoke 调用指定方法的每个参数的类型签名:
这一步可以使 RJB 知道在方法重载时应该调用哪些方法。 和对待普通 Ruby 代码一样,您将捕获对象方法返回的结果(如果有的话) ,并在自己的应用程序中使用结果。方法调用返回的结果被自动转换为相应的对 象类型。您只需在对象内直接调用方法。 Java TarArchive 类中实现的功能现在可以用于您的 Ruby 代码。通过使用 相同的方法,Java 代码中已实现的任何功能可以不加修改地在您的 Ruby 和 Rails 应用程序中重用。 完整的代码 清单 2 展示了本教程示例的完整 Ruby 代码(也可以通过 下载 获得): 清单 2. 完整的示例 Ruby 代码
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |