2010-02-04 56 views
10

因此,考虑下面的Java类:从JRuby中实例化一个非静态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...> 

什么是正确的方法来做到这一点?

回答

9
i = Outer::Inner.new(o,2) 
2

从什么可以在this discussion可以看出,你就必须做Outer:Inner.new(o, 2)

相关问题