从 JRuby 实例化非静态 Java 内部类
因此,给出以下 java 类:
class Outer
{
private int x;
public Outer(int x) { this.x = x; }
public class Inner
{
private int y;
public Inner(int y) { this.y = y; }
public int sum() { return x + y; }
}
}
我可以通过以下方式从 Java 创建内部类的实例:
Outer o = new Outer(1);
Outer.Inner i = o.new Inner(2);
但是,我似乎无法从 JRuby 中执行相同的操作
#!/usr/bin/env jruby
require 'java'
java_import 'Outer'
o = Outer.new(1);
i = o.Inner.new(2); #=> NoMethodError: undefined method `Inner' for #<Outer...>
正确的方法是什么?
So given the following java class:
class Outer
{
private int x;
public Outer(int x) { this.x = x; }
public class Inner
{
private int y;
public Inner(int y) { this.y = y; }
public int sum() { return x + y; }
}
}
I can create an instance of the inner class from Java in the following manner:
Outer o = new Outer(1);
Outer.Inner i = o.new Inner(2);
However, I can't seem how to do the same from JRuby
#!/usr/bin/env jruby
require 'java'
java_import 'Outer'
o = Outer.new(1);
i = o.Inner.new(2); #=> NoMethodError: undefined method `Inner' for #<Outer...>
What's the correct way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从此讨论中可以看出,您必须执行
Outer:Inner。新(o,2)
From what can be seen in this discussion, you'll have to do
Outer:Inner.new(o, 2)