2010-02-04 104 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)

相關問題