2012-01-11 49 views
1

可以说一个Java程序定义了A类,它有一个嵌套的静态类“B”。如何使用Rjb访问嵌套的静态类?

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

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

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

有没有办法做到这一点?

回答

2

谷歌从2006年缓存了这个结果。听起来很合理,所以拿它和实验!

(PS:我是一个java +红宝石用户,但从未使用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

我无法抗拒调查该问题莱斯有与访问静态内置函数,我想我找到了语法。访问内部类(静态或不是)可能看起来有点不可思议,但它是可行的。静态加载像其他任何类一样,但其路径名是'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 
+0

工程很好。谢谢。 – user2398029 2012-01-11 16:34:25