2013-02-14 3 views
7

У меня есть Java-библиотека, из которой я извлекаю некоторые данные.Java Array в Jruby

В комплект поставки входит 3D-массив. Однако я ничего не могу с этим поделать.

[[D[]@5615a6e0 

- это ответ, который я получаю. Я пытался отображение его:

{ |arr| arr.map { |arr| arr.to_a } } 

, но я не получаю ничего из, Что это лучший способ для разбора этого Java массив рубина использовать?

+0

Что такое сигнатура метода Java? Если он возвращает простой массив, вы должны использовать его как есть. Это похоже на массив массивов. –

+0

да его массив 3d, который возвращается –

+0

Я запутался в чем проблема; что вы пытаетесь с этим сделать, как вы его используете и т. д.? AFAIK это должен быть массив массивов (массивов, если это действительно 3D-массив - мне очень хотелось бы знать, какую подпись метода я попросил). –

ответ

9

Не должно быть проблем. Просто используйте to_a

Java код:

package com.test.sof; 

public class MyTest { 
    public static int[] ReturnTestArray() { 
     int[] anArray = new int[3]; 
     anArray[0] = 1; 
     anArray[1] = 2; 
     anArray[2] = 3; 
     return anArray; 
    } 
} 

JRuby Код:

require 'java' 
java_import com.test.sof.MyTest 

java_array = MyTest.ReturnTestArray 
p java_array 
#=> int[1, 2, 3]@484c6b 

ruby_array = Array.new 
p ruby_array 
#=> [] 
ruby_array = java_array.to_a 

p ruby_array.size 
#=> 3 
p ruby_array.join(', ') 
#=> "1, 2, 3" 
Смежные вопросы