2016-05-18 8 views
0

JRubyからJavaメソッドを呼び出そうとしていて、Javaメソッドの引数の1つがjava.util.Listのインスタンスである必要があります。私はこれをJRubyから動作させることはできません。 JRubyでListオブジェクトのインスタンスを作成しようとすると、Listへの割り当て要素のメソッドが[]=になりません。JRubyからjava.util.Listを操作する

ArrayListListに変換する方法で自分のJavaクラスを作成する必要があると思われますが、私はJava開発者ではありません。このクラスの作成方法はわかりません。


編集:私はあなたがここにダウンロードできる「PDFフォームデザイナー」と呼ばれる古いオープンソースのJavaソフトウェアを使用して、フォーム要素を持つPDFの作成を自動化しようとしています:https://sourceforge.net/projects/pdfformsdesigne/files/pdfformsdesigne/0.8b05/forms_src.zip/download

私がしようとしていますorg.pdf.forms.writer.Writerクラスで定義されているwriteメソッドを呼び出します。私は基本的にクラスで定義されたpublishPDFメソッドのコードを複製しています。

ArrayListのインスタンスとしてwidgets引数を設定しました。これはJRubyで扱いやすいです。私はそれをListに変換する必要があるので、PDFドキュメントを保存するメソッドを呼び出すことができます。ここで

が動作していないJRubyのコードのビットです:

widgets = ArrayList.new() 
widgets.add(documentProperties.getPage(1).getWidgets) 
widgets.add(documentProperties.getPage(2).getWidgets) 
writer.write(file, widgets.to_java(java.util.List), documentProperties.getDocumentProperties()) # throws an error 

答えて

0

java.util.ArrayListはタイプjava.util.Listです。だから、あなたがArrayListListに変換する新しいクラスを書く必要があると言う理由がわかりません。問題を説明するためにコードとエラーを貼り付けてください。

+0

'List'変数を期待するJavaメソッドに' ArrayList'変数を渡そうとすると、このエラーが発生します: 'TypeError:java.util.ArrayList to [Ljava.util.List;' 。いくつかのコードサンプルを追加するために投稿を編集します。 – Teddy

+0

あなたが持っているように見える問題は、ArrayListをListの配列に変換することです。 Listの配列はArrayListの配列とは異なるオブジェクトであり、型キャストはできません。あなたのwidgets.to_Java(java.util.List)はあなたにリストのオブジェクトを与え、List []は与えません。 List []を返すようにコードを変更すればうまくいくはずです。 – Garun

関連する問題