2016-05-18 5 views
0

Я пытаюсь вызвать метод Java из JRuby, и один из аргументов метода Java должен быть экземпляром java.util.List. Я не могу заставить это работать от JRuby. Когда я пытаюсь создать экземпляр объекта List в JRuby, он не имеет метода []= для элементов назначения в List.Работа с java.util.List от JRuby

Я думаю, что мне, возможно, придется написать свой собственный Java-класс с помощью метода преобразования ArrayList в List, но я не разработчик Java, и я не знаю, как создать этот класс.


редактирует: Я пытаюсь автоматизировать создание PDF с элементами форм с использованием старых открытым исходным кодом Java под названием «PDF Forms Designer», который вы можете скачать здесь: https://sourceforge.net/projects/pdfformsdesigne/files/pdfformsdesigne/0.8b05/forms_src.zip/download

Я пытаюсь вызовите метод write, определенный в классе org.pdf.forms.writer.Writer. Я в основном дублирую код в методе publishPDF, определенном в классе org.pdf.forms.gui.commands.Commands.

У меня есть аргумент widgets как пример ArrayList, с которым легко работать в 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. Поэтому я не уверен, почему вы говорите, что вам нужно написать новый класс для преобразования ArrayList в List. Пожалуйста, вставьте свой код и ошибку, чтобы объяснить проблему.

+0

Когда я пытаюсь передать переменную 'ArrayList' в метод Java, который ожидает переменную' List', я получаю эту ошибку: 'TypeError: не удалось принудить java.util.ArrayList к [Ljava.util.List;' , Я отредактирую свое сообщение, чтобы добавить образцы кода. – Teddy

+0

Проблема, с которой вам кажется, связана с преобразованием ArrayList в массив List. Массив List - это другой объект из массива ArrayList и не может быть напечатан. ваш widgets.to_Java (java.util.List) предоставит вам объект List, а не List []. Измените свой код, чтобы вернуть List [], и он должен работать. – Garun

 Смежные вопросы

  • Нет связанных вопросов^_^