私はJRubyを試しています-rubyファイルからJavaを生成します。私は、Javaインターフェースを実装するrubyの抽象クラスと、これを拡張する子クラスを持っています。ルビーでも。
http://jira.codehaus.org/browse/JRUBY-6342で説明されているように、生成されたすべてのJavaファイルがRubyObjectのみを拡張するという問題が発生しています。
他の誰かがこれに遭遇し、回避策があるかどうか疑問に思っていますか?現在、抽象クラスを拡張しないため、各子クラスでjava_implementインターフェイスを使用しています。
問題を説明するJRUBY-6342のスニペットを含めました。
jrubyc --javaによって生成されたJavaコードは、Rubyクラスの継承をサポートしていないようです。次の簡単な例を考えます。
クラスAdefmy_class; self.class.name end end
クラスB<A終了
B.javaで生成されたクラスは、AではなくRubyObjectを継承し、JavaでBクラスを完全に破壊します。やや関連性のある注意点として、モジュールの組み込みも機能していないようです。インクルードMを持つクラスは、生成されたJavaコードでMのメソッドを取得しません。
RubyまたはJRubyの理解に何か欠けていますか?