假设一个 Java 程序定义了类 A,它有一个嵌套的静态类“B”。
如何使用 Ruby-Java Bridge 访问 B 类?
例如,这些尝试不起作用:
A = Rjb::import('package.A')
A.B
A::B
有没有办法做到这一点?
假设一个 Java 程序定义了类 A,它有一个嵌套的静态类“B”。
如何使用 Ruby-Java Bridge 访问 B 类?
例如,这些尝试不起作用:
A = Rjb::import('package.A')
A.B
A::B
有没有办法做到这一点?
谷歌从 2006 年缓存了这个结果。虽然听起来很合理,所以接受它并进行实验!
(PS:我是 java + ruby 用户,但从未使用过 Rjb,所以只是传递信息......)
我忍不住调查 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