如何使用Rjb访问嵌套的静态类?

时间:2012-01-11 01:37:28

标签: java ruby nested-class rjb

让我们说Java程序定义了A类,它有一个嵌套的静态类'B'。

如何使用Ruby-Java Bridge访问B类?

例如,这些尝试不起作用:

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

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

Google从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