Создание нестатического внутреннего класса Java из JRuby - PullRequest
10 голосов
/ 04 февраля 2010

Итак, учитывая следующий класс 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...>

Как правильно это сделать?

Ответы [ 2 ]

9 голосов
/ 04 февраля 2010
i = Outer::Inner.new(o,2)
2 голосов
/ 04 февраля 2010

Из того, что можно увидеть в этом обсуждении , вам придется сделать Outer:Inner.new(o, 2)

...