2

以下は、RubyString から Java Char に変換するために使用しているコードです。Jruby のより良い方法を教えてください (これらの種類の型エラーまたは変換する jruby のコードを自動的に処理します)。

ruby_string="Raj"

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

1 に答える 1

7

まず、JRuby を 1.8 モードで実行するか 1.9 モードで実行するかによって、JRuby の動作が少し異なります。JRuby 1.7.0 以降では、1.9 がデフォルトです。その他では、1.8 がデフォルトです。デフォルトを変更するには、コマンド ラインで--1.8または--1.9を渡します。jruby

1.8 モードでは、単一のインデックスで文字を取得するなど、文字列に対する特定の操作は数値 ( Fixnum) を返しますが、1.9 モードでは常に文字列を返します。JRubyFixnumは 0 から 65535 までの Ruby と Javacharの間で自動的に変換するため、文字を受け入れる Java メソッドに 1.8 モードの「文字」値を直接渡すことができます。例えば

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

1.9 モードでは、str[0]は 1 文字の文字列であるため、その文字を数値に変換する必要があります。ordインスタンス メソッドを使用してこれを行います。

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

それが役立つことを願っています。

于 2012-10-25T22:43:31.530 に答える