2

Javaプログラムが、ネストされた静的クラス「B」を持つクラスAを定義するとします。

Ruby-Java Bridgeを使用してクラスBにアクセスするにはどうすればよいですか?

たとえば、これらの試みは機能しません。

A = Rjb::import('package.A')
A.B 
A::B

これを達成する方法はありますか?

4

1 に答える 1

3

グーグルは2006年からこの結果をキャッシュしました。しかし、合理的に聞こえるので、それを試してみてください!

(PS:私はjava + ruby​​ユーザーですが、Rjbを使用したことがないので、情報を渡すだけです...)

http://webcache.googleusercontent.com/search?q=cache:1p7OdptgsYUJ:blog.voneicken.com/2006/12/3/accessing-inner-java-classes-via-rjb+inner+class+rjb+ruby+ java&cd = 10&hl = en&ct = clnk&gl = au

静的内部へのアクセスに関してLesが抱えていた問題を調査することに抵抗できず、構文を見つけたと思います。内部クラス(静的または非静的)へのアクセスは少し不安定に見えるかもしれませんが、それは実行可能です。スタティックは他のクラスと同じようにロードされますが、パス名は「OuterClass$StaticInnerClass」です。非静的内部クラスは少し注意が必要です。'OuterClass$Inner'を使用して静的なようにインポートします。これで内部クラスができましたが、コツはインスタンスをインスタンス化することです。コンストラクターへの最初の引数としてOuterClassインスタンスを提供する必要があります(したがって、Javaのカーテンの少し後ろで、内部が外部のメソッドに持つ暗黙のアクセスを明らかにします。データ):

Outer = Rjb::import(‘Outer’)
Inner = Rjb::import(‘Outer$Inner’)
StaticInner = Rjb::import(‘Outer$StaticInner’)

outer = Outer.new
inner = Inner.new(outer)
staticInner = StaticInner.new
于 2012-01-11T04:00:04.493 に答える