2013-02-14 12 views
7

Ho una lib Java che sto tirando fuori alcuni dati.Java Array in Jruby

Espone un array 3D. Tuttavia non posso farci nulla.

[[D[]@5615a6e0 

è la risposta che ottengo. Ho provato la mappatura è:

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

ma ottengo niente, Qual è il modo migliore per analizzare questo array java per ruby ​​usare?

+0

Qual è la firma del metodo Java? Se restituisce un array semplice dovresti essere in grado di usarlo così com'è. Sembra un array di array. –

+0

sì è un array 3d che viene restituito –

+0

Sono confuso quale sia il problema allora; cosa stai cercando di fare con esso, come lo stai effettivamente usando, ecc? AFAIK dovrebbe essere una matrice di matrici (di array, se è davvero un array 3D - la firma del metodo che ho chiesto sarebbe davvero piacevole da sapere). –

risposta

9

Non dovrebbe essere un problema. Basta usare to_a

del codice 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; 
    } 
} 

codice 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"