2012-10-22 37 views
2

下面是我用来从RubyString转换为Java字符的代码..你能否建议我更好的方式在哪里Jruby(自动处理这些类型错误或jruby中的一些代码来转换)Jruby-将RubyString转换为Java字符

ruby_string="Raj" 

java.lang.String.new(col_value) 
col_value=str_obj.charAt(0) 
+0

你只是想获得ruby_string的第一个字符?你想要做什么的更广泛的目的是什么? – echristopherson

+0

不,我试图将上面的ruby_string(ruby_string)转换为Java字符来调用接受java char作为参数的java方法 – RajKamal

回答

6

首先,JRuby的行为有点不同,具体取决于您是以1.8模式还是1.9模式运行它。在JRuby 1.7.0及更高版本中,默认值为1.9;与其他人一样,1.8是默认值。要更改默认值,您可以在命令行上将--1.8--1.9传递给jruby

在1.8模式下,字符串的某些操作(如在单个索引处获取字符)返回数字(Fixnum s),而在1.9模式下,它们总是返回字符串。 JRuby会自动在0到65535之间的Ruby Fixnum和Java char之间进行转换,因此您可以将1.8模式的“字符”值直接传递给接受字符的Java方法;例如

str = 'foo' 
java_obj.methodThatTakesAChar(str[0]) 

在1.9模式下,因为str[0]是一个单字符字符串,你要它字符转换为数字。你用ord实例方法做到这一点:

str = 'foo' 
java_obj.methodThatTakesAChar(str[0].ord) 

我希望有帮助。

+2

不要忘了单击复选标记。谢谢。 – echristopherson

+0

真的很有帮助。谢谢! –