# Re: how to solve a special JRuby and Java syntax conflict? - correction to my 'final' summary?

**URL:** <https://www.ruby-forum.com/t/re-how-to-solve-a-special-jruby-and-java-syntax-conflict-correction-to-my-final-summary/177326>\
**Category:** Ruby\
**Created:** [October 15, 2009, 12:58am UTC](https://www.ruby-forum.com/t/re-how-to-solve-a-special-jruby-and-java-syntax-conflict-correction-to-my-final-summary/177326 "2009-10-15T00:58:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![colinbm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/e9c0ed/32.png) [@colinbm](https://www.ruby-forum.com/u/colinbm)\
**Post date:** [October 15, 2009, 12:58am UTC](https://www.ruby-forum.com/t/re-how-to-solve-a-special-jruby-and-java-syntax-conflict-correction-to-my-final-summary/177326/1 "2009-10-15T00:58:08Z")

</div>

Axel

I hope this won’t be taken the wrong way:  
I’m rather glad you had the problem and posted your question,  
because it prompted me to actually try out what I’d intended to do,  
and even more because Carl Leiby-2 gave a very elegant way of  
converting a whole array which I probably would not have found myself,  
and which will save me writing quite a few lines of code  
using the way I originally posted.

So, to summarise for my benefit:  
in JRuby you can create a two dimension Ruby Array of doubles,  
and then convert it in one go to a JRuby Java Array as follows:  
rarr = [[0.0, 0.1], [1.0, 1.1, 1.2, 1.3], [2.0], [3.0, 3.1, 3.2] ]  
jarr = rarr.to\_java Java::double[]  
Note that it works even with different sizes of “sub-arrays”.  
(But it won’t work if - for example - you replace the [2.0] by 2.0.)  
For access to individual elements of the JRuby Java Array you can do:  
puts jarr[2][0] # getter  
jarr[2][0] = 2.0002 # setter  
puts jarr[2][0] # getter  
and - obviously - can write JRuby methods which process multiple  
elements  
by wrapping the access to individual elements.  
So, if, for some reason, the “to\_java Java::double[]” way doesn’t work,  
we can call a user-written Java method to create a Java Array  
with the appropriate dimensions and with values 0.0,  
and then populate it from JRuby by accessing the individual elements,  
or by passing individual values and their “indexes” to a user-written  
Java method which then sets the appropriate element in the Java Array.  
(I’m happier when I have more than one way to do things, as a  
“back-up”.)

For a one dimensional array the Java conversion is as follows:  
rarr = [0.0, 1.1, 2.2]  
jarr = rarr.to\_java Java::double  
with individual access - as you’d expect - like: jarr[2] = 2.0002

For a three dimensional array the Java conversion is as follows:  
rarr= [[ [0.001, 0.01], [0.101, 0.11, 0.12] ], # [0][0][i] &  
[0][1][i]  
[[ 1.001] ] # [1][0][i]  
]  
jarr = rarr.to\_java Java::double[][]  
with individual access - as you’d expect - like: jarr[1][0][0] = 1.01001

And - presumably - so on for more dimensions.

So thanks for the original post, and for posting in the JRuby forums!

Colin
